.serializeArray()
返回: Array
.serializeArray()
描述:把一个表单元素集合编码为一个名值对数组。
加入于: 1.2
.serializeArray()该方法不接受任何参数
.serializeArray()
方法创建了一个JavaScript数组,用来编码成一个JSON字符串。它在表单或表单控件的jQuery集合中进行操作。这些控件可以是这么几种类型的:
<form> <div><input type="text" name="a" value="1" id="a"></div> <div><input type="text" name="b" value="2" id="b"></div> <div><input type="hidden" name="c" value="3" id="c"></div> <div> <textarea name="d" rows="8" cols="40">4</textarea> </div> <div><select name="e"> <option value="5" selected="selected">5</option> <option value="6">6</option> <option value="7">7</option> </select></div> <div> <input type="checkbox" name="f" value="8" id="f"> </div> <div> <input type="submit" name="g" value="Submit" id="g"> </div> </form>
.serializeArray()
方法针对有结果的控件使用标准W3C规则,以确定哪个元素需要包含在内;特别是这些元素不能是被禁用的,而且必须带有一个元素属性name
。非提交按钮的值也会被序列化,因为表单不使用一个按钮来提交。来自文件选择元素中的数据不会被序列化。
该方法可以对包含了单个的表单控件的jQuery对象进行操作,单个表单控件比如说<input>
、<textarea>
和<select>
。然而,还有个更简单的方法是,直接选择<form>
元素进行序列化操作:
$( "form" ).submit(function( event ) { console.log( $( this ).serializeArray() ); event.preventDefault(); });
这导致了以下的数据结构(由支持console.log
的浏览器提供):
[ { name: "a", value: "1" }, { name: "b", value: "2" }, { name: "c", value: "3" }, { name: "d", value: "4" }, { name: "e", value: "5" } ]
示例
从表单中获得值,迭代遍它们,并把它们应用到一个结果显示中:
<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <title>serializeArray demo</title> <style> body, select { font-size: 14px; } form { margin: 5px; } p { color: red; margin: 5px; } b { color: blue; } </style> <script src="https://code.jquery.com/jquery-1.10.2.js"></script> </head> <body> <p><b>Results:</b> <span id="results"></span></p> <form> <select name="single"> <option>Single</option> <option>Single2</option> </select> <select name="multiple" multiple="multiple"> <option selected="selected">Multiple</option> <option>Multiple2</option> <option selected="selected">Multiple3</option> </select> <br> <input type="checkbox" name="check" value="check1" id="ch1"> <label for="ch1">check1</label> <input type="checkbox" name="check" value="check2" checked="checked" id="ch2"> <label for="ch2">check2</label> <input type="radio" name="radio" value="radio1" checked="checked" id="r1"> <label for="r1">radio1</label> <input type="radio" name="radio" value="radio2" id="r2"> <label for="r2">radio2</label> </form> <script> function showValues() { var fields = $( ":input" ).serializeArray(); $( "#results" ).empty(); jQuery.each( fields, function( i, field ) { $( "#results" ).append( field.value + " " ); }); } $( ":checkbox, :radio" ).click( showValues ); $( "select" ).change( showValues ); showValues(); </script> </body> </html>
演示结果