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>

Chrome 控制台正在打印一个空数组,就像 #testForm :input 选择器没有选择 textarea 一样。我正在寻找一种选择所有表单输入的方法,这适用于除 textarea 之外的其他元素。我该如何解决?serialize* Array * 是必需的还是我可以只使用 serialize 方法将数据发送到服务器?

4

3 回答 3

1

.serializeArray()使用输入元素的名称进行序列化,因为您的元素没有名称,所以将其省略。

.serializeArray() 方法使用成功控制的标准 W3C 规则来确定它应该包含哪些元素;特别是该元素不能被禁用,并且必须包含名称属性。

<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 回答
1

.serializeArray()需要名称属性来创建一个数组,所以插入名称选项

<textarea name="test" id="test" rows="17" cols="65"></textarea>
于 2013-11-04T10:55:13.530 回答