有没有办法将使用多维数组表示法作为其字段名称的表单的输出转换为该数据的实际关联数组或对象?
例如,我有两个字段:
<input type="text" name="contract[main][date]" />
<input type="text" name="contract[options][timer]" />
我想阻止表单的默认操作(我知道该怎么做),然后将表单中的所有输入转换为一个对象或关联数组,该对象或关联数组模仿了可用的关联数组的结构PHP 的 $_GET 或 $_POST 变量(如果我尝试在服务器端执行此操作)。像这样的东西:
var contract = {
main: {
date:'input field value'
},
options: {
timer:'another input field value'
}
};
最佳答案
function formToArray(form) {
var formArray = new Array();
var formElements = form.find('input[name]');
formElements.each(function() {
var name = $(this).attr('name');
var value = $(this).val();
// replace all occurrences of ']' with ''
name = name.split(']').join('');
var elements = name.split('[');
var previousRef = formArray;
for(var i = 0, count = elements.length; i < count; i++) {
var key = elements[i];
if (!previousRef[key]) {
previousRef[key] = new Array();
}
if (i != elements.length - 1) {
previousRef = previousRef[key];
} else if (i == elements.length - 1) {
previousRef[key] = value;
}
}
});
return formArray;
}
var form = $('#my_form');
var formArray = formToArray(form);
关于php - 有没有办法像 PHP 一样自动将表单的输出转换为数组,但使用 jQuery/Javascript?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15794045/