jquery之表单插件(获得表单控件的值)
----------
表单插件提供两种途径来获得表单控件的值:作为值的数组,或作为序列化字符串。表单插件提供3个方法用来获得表单控件的值 :fieldValue(),formSerialize()和fieldSerialize()。
===
1.获得控件值
我们可以用fieldValue()命令来获得表单控件的值。可能看第一眼时你认为fieldValue()和val()是互相冗余的。但在jquery1.2之前,val()命令的功能相当弱,因而fieldValue()被设计用来弥补val()的不足。
第一个主要的差别是fieldValue()返回包装集里表单控件的全部的值所构成的数组,而val()只返回第一个元素的值(只有在第一个元素是表单控件的情况下)。事实上,fieldValue()始终返回一个数组,即使只有一个值或没有任何值可供返回。
另一个差别是fieldValue()忽略包装集里的任何非控件元素。如果创建页面上的全部元素所构成的集合,则fieldValue()只查找所有控件的值,并以数组的形式返回这些值。但是并非所有的控件都在返回的数组里有值:就像val()命令那样,在默认的情况下fieldValue()只返回被视为成功控件的值。
那么,什么是成功控件?简而言之,成功控件是指那些拥有name特性,不被禁用的、已选中(对于可选中的控件如复选框和单选按钮)的控件。一些控件,比如复位控件(<input type="reset">)和按钮控件(<button>),始终被认为是不成功的并且决不参与表单提交。其它控件,如<select>,必须有已选中的值才被视为成功控件。
---
命令fieldValue()允许我们选择是否包括不成功的值。
fieldValue()语法:
fieldValue(excludeUnsuccessful)
收集包装集里所有成功表单控件的值,并且返回这些值所构成的字符串数组。如果未找到任何值,就返回一个空数组。
参数
excludeUnsuccessful
(布尔值)如果省略(或设置为true),则指定包装集里任何不成功控件被忽略
返回
已收集的值所构成的字符串数组
---
如例:
或
===
序列化控件值
如果我们想要从表单控件的值来构造适当地格式化的、已编码的查询字符串,则应求助于formSerialize()和fieldSerialize()命令。这两个包装器方法都从包装集里收集值并且返回已将名称和值适当地进行URL编码的、格式化的查询字符串:formSerialize()方法接受包装集里的一个表单,并且序列化所有的成功表单控件;fieldSerialize()命令则序列化包装集里的所有控件,并可用于仅对表单的一部分进行序列化。
---
formSerialize()语法:
formSerialize(semantic)
从已包装表单的所有成功控件的值来创建和返回适当地格式化的、已编码的查询字符串
参数
semantic (布尔型)如果为true,则查询字符串里的各个值遵守各个元素的语义顺序,即在表单里元素被声明的顺序,如果为false,则为随机順序,按语义排序将比随机排序慢得多。
返回
生成的查询字符串
---
fieldSerialize()语法:
fieldSerialize(excludeUnsuccessful)
从已包装表单的控件的值来创建和返回适当地格式化的、已编码的查询字符串
参数
excludeUnsuccessful
(布尔型)如果省略(或设置为true),则指定包装集的任何不成功控件被忽略
返回
生成的查询字符串
---
formSerialize()的semantic参数应该受到特别注意。如果指定为true,序列化值的排序将与通过常规方式提交表单时的顺序相一致,使这些值的提交准确地模拟浏览器提交。只有在绝对必要时(通常没有必要)才指定为true,因为这样做要付出性能上的代价。
如例:
结果:text=some%20text&dropdown-Three&.......
请注意:所有成功表单控件的名称和值被收集,并且利用这些数据所创建的查询字符串已被URL编码。
如例:
这个选择器所创建的包装集只包括表单控件的子集:input类型的那些控件。结果查询字符串(只包括成功的已包装控件元素),如下:
text=some%20text&....