javascript jQuery serialize() 排除 div.classname 中的所有元素
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/16275280/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
jQuery serialize() exclude all elements within div.classname
提问by Alexey
I'm trying to exclude invisible form values from serialize() jQuery output. Invisible inputs/selects are inside div.ui-tabs-hide div's. Not the children of it, but descendants. So basically, I need to include all elements (input, select) witin div's without ui-tabs-hide class AND exclude all elements (input, select) within div's with ui-tabs-hide class in one form.
我试图从 serialize() jQuery 输出中排除不可见的表单值。不可见的输入/选择位于 div.ui-tabs-hide div 内。不是它的孩子,而是后代。所以基本上,我需要在没有 ui-tabs-hide 类的情况下包含 div 中的所有元素(输入、选择),并以一种形式排除具有 ui-tabs-hide 类的 div 中的所有元素(输入、选择)。
Right now with what I tried it includes all form elements, but I think I did not specify selectors right.
现在我尝试过的它包括所有表单元素,但我认为我没有正确指定选择器。
See below the code to reproduce the issue:
请参阅下面的代码以重现该问题:
<!DOCTYPE html>
<html>
<head>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script>
<script type="text/javascript">
$(document).ready(function() {
var formdata = $("#outboundcall:not(.ui-tabs-hide input, .ui-tabs-hide select)").serialize();
console.log(formdata);
});
</script>
<meta charset="utf-8" />
<title>JS Bin</title>
</head>
<body>
<form id="outboundcall">
<div class="content">
<div class="tabs ui-tabs ui-widget ui-widget-content ui-corner-all">
<ul class="ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all">
<li class="ui-state-default ui-corner-top ui-tabs-selected ui-state-active">
<a href="#tabs-1">Credit Card</a>
</li>
<li class="ui-state-default ui-corner-top">
<a href="#tabs-2">Cheque</a>
</li>
<li class="ui-state-default ui-corner-top">
<a href="#tabs-3">Direct Debit</a>
</li>
</ul>
<div id="tabs-1" class="ui-tabs-panel ui-widget-content ui-corner-bottom">
<input type="hidden" value="1" name="lead-payment-method" />
</div>
<div id="tabs-2" class="ui-tabs-panel ui-widget-content ui-corner-bottom ui-tabs-hide">
<p>Cheque functionality is not currently available.</p>
</div>
<div id="tabs-3" class="ui-tabs-panel ui-widget-content ui-corner-bottom ui-tabs-hide">
<input type="hidden" value="3" name="lead-payment-method" />
</div>
</div>
</div>
</form>
</body>
</html>
Here is jsbin with this code: http://jsbin.com/iyevux/5/
这是带有此代码的 jsbin:http://jsbin.com/iyevux/5/
回答by Frédéric Hamidi
回答by Rohan Kumar
Try this:
试试这个:
$(document).ready(function() {
var formdata = $("#outboundcall:not(.ui-tabs-hide) input,#outboundcall:not(.ui-tabs-hide) select").serialize();
console.log(formdata);
});
or
或者
$(document).ready(function() {
var formdata = $("#outboundcall").find(":input:not(:hidden)").serialize();
console.log(formdata);
});
From jQuery: form serialize, hidden fields, and not displayed fields
回答by dexterous
This will work :
这将工作:
$(document).ready(function() {
var formdata = $("#outboundcall input").not(".ui-tabs-hide input").serialize();
console.log(formdata);
});
Sorry earlier I did not understand the question completely, will delete that answer
抱歉之前我没有完全理解问题,将删除该答案