0

我有一个如下的 HTML。请告诉我如何在 jQuery 中检索值“任务”数组。

<div class="column1">
<input class="task_name" type="text" placeholder="Enter task name.." value="" name="task[0][name]">
</div>
<div class="column2">
<select class="task_ppl_required" name="task[0][number]">
    <option selected="selected">1</option>
    <option>2</option>
</select>
<input class="task_id" type="hidden" value="0" name="task[0][guid]">
</div>
<div class="column1">
<input class="task_name" type="text" placeholder="Enter task name.." value="" name="task[2][name]">
</div>
<div class="column2">
<select class="volunteer_task_ppl_required" name="task[2][number]" value="1">
<option selected="selected">1</option>
<option>2</option>
</select>
<input class="task_id" type="hidden" value="0" name="task[2][guid]">
</div>
4

3 回答 3

1
function getValues(form) {
    var vals = {};
    form.find("[name]").each(function() {
        var names = this.name.split(/[[\]]+/);
        if (names[names.length-1] == "") names.pop();
        var obj = vals;
        for (var i=0; i<names.length-1; i++) {
            if (! (names[i] in obj))
                obj[names[i]] = {};
            obj = obj[names[i]];
        }
        obj[names[i]] = this.value;
    });
    return vals;
}

而不是.find("[name]")你也可以只使用.serializeArray(),这可能更准确并允许更多输入。现在你可以

> getValues($myForm).task[0]
{number: "1", guid: "0"}

jsfiddle.net 上的演示,使用 Array.reduce更复杂)

于 2012-10-14T13:22:31.537 回答
1

数组近似在 PHP 中运行良好,您在 $_POST 变量中接收表单值,如果语法匹配(如您在示例中的那样),他将使用元素构造一个数组。

您可以使用 jQuery serializeArray。从网站:

.serializeArray() 方法创建一个 JavaScript 对象数组,准备好编码为 JSON 字符串。它对表示一组表单元素的 jQuery 对象进行操作。

于 2012-10-14T13:29:51.430 回答
1

如果您想要表单的所有值以发送到服务器,您可以简单地使用 jQueryserialize()方法

var formVals= $('##myForm').serialize();

这通过以下方式使用 jQuery AJAX 发送到服务器:

$.post( url, formVals, function(){/* success code*/});

参考: http ://api.jquery.com/serialize/

于 2012-10-14T13:38:21.697 回答