![](/img/trans.png)
[英]Get all text field values with same class names and put in array using jQuery
[英]Jquery get all input values and create an array (with names)
干草家伙,我正在做一些有很多表格的工作。 似乎这些不是传统方式(即使用提交按钮)“发布”的。 单击链接时,我需要一种收集所有表单数据的所有名称和值的方法(然后将document.location用于重定向)。
我希望名称保持完整,以便我可以使用简单的PHP脚本来处理数据。
有什么建议么?
我可能建议将表格序列化为JSON :
$.fn.serializeObject = function() { var o = {}; var a = this.serializeArray(); $.each(a, function() { if (o[this.name]) { if (!o[this.name].push) { o[this.name] = [o[this.name]]; } o[this.name].push(this.value || ''); } else { o[this.name] = this.value || ''; } }); return o; };
然后您可以执行以下操作:
var formArray = $("#myform").serializeObject();
$.fn.valuesArr = function()
{
var a = [];
jQuery.each(this, function(i, field){
a.push($.trim(field.value));
});
return a;
}
使用:
var myArr = $('input', $parentJQelem).valuesArr();
但是所有这些功能都无法在输入中使用数组名称。
例子-
这是正确的提交职位表格,但序列化时我得到
形式[类型[]]:2
这是不正确的-我需要-form [type] []:2
您可以使用诸如我的提交助手之类的内容
function submit(form) {
var form = $(form);
$.ajax(
{ data: $.param( form.serializeArray()),
dataType:'script',
type:'post',
url: form.attr("action")});
}
而不是'serializeArray()',我将使用'serialize()',而不是使用ajax发布它,您可以做任何您想做的事情。
抱歉,暂时没有更多时间,但是希望此摘要对您有所帮助。
cletus的回答在效率方面是最好的。
但是,这是另一个不依赖JSON的有效解决方案:
//this is my object I will fill my array with
function myObject(name, value)
{
this.name = name;
this.value = value;
}
var arr = $.map(
$('span'), function (item) {
var $item = $(item); //no need to $(item) 2 times
return new
myObject(
$item.attr("name"), //name field
$item.text() //value field
);
}
);
arr
将是myObject
的数组,每个数组都包含一个name
属性和一个value
属性。
使用选择器代替$('span')
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.