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[]">