jquery得到input数组的字段
我在这里发现了类似的问题,但没有为我工作。
有如下的input:
<input type="text" value="2" name="pages_title[1]"> <input type="text" value="1" name="pages_title[2]">
试图让这些领域像:
$('input[name="pages_title[]"]')
但有空的结果:(
如何获得所有领域? 我只能得到它像$('input[name="pages_title[1]"]')
使用开始select器
$('input[name^="pages_title"]').each(function() { alert($(this).val()); });
jsfiddle的例子
注意:与@epascarello一致,更好的解决scheme是将一个类添加到元素并引用该类。
这通常工作在checkbox和单选button…但是,每个名称应该是相同的。
<input type="text" value="2" name="pages_title[]"> <input type="text" value="1" name="pages_title[]"> var x = $('input[name="pages_title[]"]').val();
这是“假设”让你所有的领域逗号分隔值。 从来没有用文本框试过,所以不能保证。
正如@John所评论的那样:遍历它们。 $('input[name="pages_title[]"]').each(function() { var aValue = $(this).val(); });
编辑:不是总是你只需要回答OP的问题,有时你需要教他们更好的方法。 (对不起,如果这听起来傲慢)
评论:将input定义为
<input type="text" value="1" name="pages_title[1]"> <input type="text" value="2" name="pages_title[2]">
破坏数组,每个input都有一个唯一的名字,因此,它不是一个数组了。
你需要使用select开始
var elems = $( "[name^='pages_title']" );
但更好的解决scheme是向元素添加一个类并引用该类。 这是一个更快的查找的原因。
var multi_members=""; $("input[name='bayi[]']:checked:enabled").each(function() { multi_members=$(this).val()+","+multi_members; });
使用map方法我们可以得到存储在数组中的input值。
var values = $("input[name='pages_title[]']").map(function(){return $(this).val();}).get();
你可以给你的input文本框类名称,如下所示:
<input type="text" value="2" name="pages_title[1]" class="pages_title"> <input type="text" value="1" name="pages_title[2]" class="pages_title">
并像这样迭代:
$('input.pages_title').each(function() { alert($(this).val()); });
我认为最好的方法是使用一个PropForm表单并使用jQuery.serializeArray 。
<!-- a form with any type of input --> <form class="a-form"> <select name="field[something]">...</select> <input type="checkbox" name="field[somethingelse]" ... /> <input type="radio" name="field[somethingelse2]" ... /> <input type="text" name="field[somethingelse3]" ... /> </form> <!-- sample ajax call --> <script> $(document).ready(function(){ $.ajax({ url: 'submit.php', type: 'post', data: $('form[name="a-form"]).serializeArray(), success: function(response){ ... } }); }); </script>
值将在PHP中以$_POST['field'][INDEX]
。
你可以用这样的双反斜杠来转义方括号:
$('input[name="pages_title\\[\\]"]')
您可以使用包含select器:
[name * =“value”] :select具有包含给定子string的值的指定属性的元素。
$( document ).on( "keyup", "input[name*='pages_title']", function() { alert($(this).val()); });
为了通过具有特定特征的属性来select元素,可以使用正则expression式模式创build一个新的select器,如下面的代码片段所示。 正则expression式的用法是为了尽可能灵活地使用新的select器:
jQuery.extend(jQuery.expr[':'], { nameMatch: function (ele, idx, selector) { var rpStr = (selector[3] || '').replace(/^\/(.*)\/$/, '$1'); return (new RegExp(rpStr)).test(ele.name); } }); // // use of selector // $('input:nameMatch(/^pages_title\\[\\d\\]$/)').each(function(idx, ele) { console.log(ele.outerHTML); });
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <input type="text" value="2" name="pages_title[1]"> <input type="text" value="1" name="pages_title[2]"> <input type="text" value="1" name="pages_title[]">