表单中的jQuery Textarea选择器

时间:2013-11-04 10:49:24

标签: javascript jquery forms jquery-selectors textarea

我有以下代码:

<!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:输入选择器没有选择textarea一样。我正在寻找一种方法来选择所有表单输入,这适用于除textarea之外的其他元素。我怎么解决?序列化* 数组 *是必需的还是我可以使用serialize方法将数据发送到服务器?

3 个答案:

答案 0 :(得分:1)

.serializeArray()使用input元素的名称来序列化,因为你的元素没有名字,所以省略了它。

  

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

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

演示:Fiddle

答案 1 :(得分:1)

要使serializeArray()方法有效(并且您的HTML有效),您需要为textarea提供name属性:

<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>

Example fiddle

答案 2 :(得分:1)

.serializeArray()需要name属性来创建数组,因此插入名称选项

<textarea name="test" id="test" rows="17" cols="65"></textarea>