1

私は次のコードを持っています:

<!DOCTYPE html>
<html>
<head>
    <meta http-equiv='Content-Type' content='text/html;charset=utf-8' />

    <script type='text/javascript' src='jquery-1.10.2.min.js'></script>
</head>
<body>
    <form id="testForm" method="post" action="">
        <textarea id="test" rows="15" cols="60"></textarea>
    </form>
    <button type="button" onclick="console.log($('#testForm :input').serializeArray());">Send</button>
</body>
</html>

#testForm :input セレクターがテキストエリアを選択していない場合と同様に、Chrome コンソールは空の配列を出力します。すべてのフォーム入力を選択する方法を探していますが、これはテキストエリア以外の他の要素ではうまく機能します。どうすれば解決できますか?serialize* Array * は必要ですか、それとも単に serialize メソッドを使用してサーバーにデータを送信できますか?

4

3 に答える 3

1

.serializeArray()は、入力要素の名前を使用してシリアル化します。要素には名前がないため、省略されます。

.serializeArray() メソッドは、制御を成功させるための標準 W3C ルールを使用して、含める要素を決定します。特に、要素を無効にすることはできず、name 属性を含める必要があります。

<textarea name="test" id="test" rows="15" cols="60"></textarea>

デモ:フィドル

于 2013-11-04T10:51:36.613 に答える
1

メソッドを機能させるserializeArray()(そして HTML を有効にする) には、textareaaname属性を指定する必要があります。

<form id="testForm" method="post" action="">
    <textarea id="test" rows="15" cols="60" name="foo"></textarea>
</form>
<button type="button" onclick="console.log($('#testForm :input').serializeArray());">Send</button>

フィドルの例

于 2013-11-04T10:52:10.487 に答える