使用jQuery从多个输入中获取值数组
有人可以让我知道如何从几个输入字段中获取值吗?
我有一个包含几个输入的列表,如下所示:
我有一个Javascript解决方案(在表单提交):
... var extratitles = document.getElementsByName('additionaltitlename'); var str = ''; for (var i = 0; i < extratitles.length; i++) { str = str + '|' + extratitles.item(i).value; } }
我如何在JQuery中做同样的事情?
有两个同名的输入是无效的。 如果要执行此操作,可以使用
你可以试试这个:
有了这个jQuery
// click handler function onClick(event) { var titles = $('input[name^=titles]').map(function(idx, elem) { return $(elem).val(); }).get(); console.log(titles); event.preventDefault(); } // attach button click listener on dom ready $(function() { $('button').click(onClick); });
看到它在jsFiddle上工作
编辑
这个答案为您提供数组中的标题,而不是使用|
的字符串 分隔器。 就个人而言,我认为这更有用。
如果您只是提交表单并且想要支持多个值,请使用.serialize
方法,如其他答案中所述
使用jQuery的本机serialize
函数:
var data = $('input[name="additionaltitlename"]').serialize();
文档
.serialize()方法以标准URL编码表示法创建文本字符串。 它在表示一组表单元素的jQuery对象上运行。
手段:
str = ''; $("input[type='text']").each(function() { str = str + '|' + $(this).val(); });
要么
str = ''; $("input[name='additionaltitlename']").each(function() { str = str + '|' + $(this).val(); });
?
除了@ gdoron或者@ macek的回答之外,我想补充一点,你发布的代码的所有错误都是你有一个太多了。 这有效(虽然它仍有改进的余地):
$('#getpreviewbutton').click(function(){ var extratitles = document.getElementsByName('additionaltitlename'); var str = ''; for (var i = 0; i < extratitles.length; i++) { str = str + '|' + extratitles.item(i).value; } });
请参阅: http : //jsfiddle.net/8XJcc/
我不知道您使用的是哪种浏览器,但使用类似Firebug或Chrome开发工具的方法可以非常方便地发现像这样的简单错误。 请参阅此 Chrome或此版本的Firefox参考。 即使IE有一个 - 只需按F12。