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

配列の近似は PHP でうまく機能します。PHP では、$_POST 変数でフォームの値を受け取り、構文が一致する場合 (この例のように)、彼は要素を含む配列を作成します。

jQuery serializeArrayを使用できます。サイトから:

.serializeArray() メソッドはオブジェクトの JavaScript 配列を作成し、JSON 文字列としてエンコードする準備ができています。一連のフォーム要素を表す jQuery オブジェクトで動作します。

于 2012-10-14T13:29:51.430 に答える
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

サーバーに送信するためにフォームのすべての値が必要な場合は、単に jQueryserialize()メソッドを使用できます

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

これは、次の方法で jQuery AJAX を使用してサーバーに送信されます。

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

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

于 2012-10-14T13:38:21.697 に答える