jquery选择符快速提取web表单数据示例
2014-03-27 00:00
615 查看
本人比较懒,在做web时,当遇到要重复多次同样的事时,就想找一种省时省力的方法。
以前在web提交表单并且需要验证用户输入时,在提取用户输入信息时,都要在js用到document.getElementById(),这样一个两个表单域还行,但有很多时(我就遇到过有十几个的情况)看看都眼花,所以个人就比较反感这种方式,不过还好,我自己瞎琢磨,利用jquery找到了一种方便的方法。
我给需要提交数据每个表单域添加了一个额外的属性,用自己额外定义的属性"_postField"代替原来的name属性,比如<input type="text" _postField="name" /><input type="radio" _postField="sex" />之类,然后用query获取所有存在_postField属性的dom对象,并进行遍历,封装成以_postField的值为key,其内容为value的json键值对,其js的方法如下:
测试代码:
以上例子的表单域比较少,一些东西体现不出,但当表单域的数量比较多少时,就能体现出其方便性,而且重用性较好;再者,如果用jquery异步提交的话,连手动封装json数据的操作都省了。
也有人可能不愿意给表单域增加类似“_postField”的自定义字段,那就直接用本身就有的name也行,这只是jquery选择符的使用不同,其实质还是一样的。
以前在web提交表单并且需要验证用户输入时,在提取用户输入信息时,都要在js用到document.getElementById(),这样一个两个表单域还行,但有很多时(我就遇到过有十几个的情况)看看都眼花,所以个人就比较反感这种方式,不过还好,我自己瞎琢磨,利用jquery找到了一种方便的方法。
我给需要提交数据每个表单域添加了一个额外的属性,用自己额外定义的属性"_postField"代替原来的name属性,比如<input type="text" _postField="name" /><input type="radio" _postField="sex" />之类,然后用query获取所有存在_postField属性的dom对象,并进行遍历,封装成以_postField的值为key,其内容为value的json键值对,其js的方法如下:
<script type="text/javascript> function getFormField(sel){ var objs = $("*["+sel+"]"); var postData = {}; for(var i=0,len=objs.length;i<len;i++){ var obj = objs[i]; var nodeName = obj.nodeName.toLowerCase(); var field = $(obj).attr(sel); if(nodeName=="input"){ if(obj.type.trim()=="radio"&&(obj.checked||obj.checked=="checked")){ postData[field] = $(obj).val(); continue; } if(obj.type.trim()=="checkbox"&&(obj.checked||obj.checked=="checked")){ var ov = postData[field]||""; var nv = ov+","+$(obj).val(); postData[field] = nv.replace(/^,+/,""); continue; } if(obj.type.trim()=="text"||obj.type.trim()=="hidden"){ postData[field] = $(obj).val(); continue; } continue; } if(nodeName=="textarea"){ postData[field] = $(obj).val(); continue; } if(nodeName=="select"){ var val = obj.options[obj.selectedIndex].value; postData[field] = val; continue; } postData[field] = $(obj).html(); } //返回从表单获取数据的json数据 return postData; } </script>
测试代码:
<form style="margin-left:200px; margin-top:300px;"> <input type="text" value="" _postField="name" /><br /><br /> <input type="radio" value="男" name="sex" _postField="sex" />男 <input type="radio" value="女" name="sex" _postField="sex" />女 <input type="radio" value="中性" name="sex" _postField="sex" />中性 <br /><br /> <select _postField="job"> <option value="上班">上班</option> <option value="讨饭">讨饭</option> <option value="啥都不相干">啥都不相干</option> </select> <br /><br /> <input type="button" value=" OK " onclick="test();" /> </form> <script> function test(){ var postData = getFormField("_postField"); var sb = []; for(var o in postData){ sb.push(o+"="+postData[o]); } alert(sb.join("\n")); } </script>
以上例子的表单域比较少,一些东西体现不出,但当表单域的数量比较多少时,就能体现出其方便性,而且重用性较好;再者,如果用jquery异步提交的话,连手动封装json数据的操作都省了。
也有人可能不愿意给表单域增加类似“_postField”的自定义字段,那就直接用本身就有的name也行,这只是jquery选择符的使用不同,其实质还是一样的。
相关文章推荐
- jquery选择符快速提取web表单数据示例
- 利用jquery选择符快速提取web表单数据
- JavaWeb -- Struts1 使用示例: 表单校验 防表单重复提交 表单数据封装到实体
- JavaWeb -- Struts1 使用示例: 表单校验 防表单重复提交 表单数据封装到实体
- 使用jQuery将数据快速填充到表单
- jQuery通过AJAX快速批量提交表单数据
- jquery清空表单数据示例分享
- jQuery通过ajax快速批量提交表单数据
- jquery清空表单数据示例分享
- 【jQuery示例】遍历表单数据并显示
- jQuery通过AJAX快速批量提交表单数据
- [JAVAWEB]4.用jQuery完成数据验证和表单提交
- java web中表单数据传输乱码的解决方案记录
- 分享一款JS工具:st.js - 从 Object 中快速提取数据或转化成另一个 Object
- javaweb之request通过各种表单提交项收集用户数据和用request获取表单提交数据
- jQuery扩展 form表单数据json序列化
- jquery教程ajax请求json数据示例
- 将form表单里的数据封装成对象 json2.js的例子 jquery的serialize方法转换空格为+号的解决方法
- 不使用反射,“一行代码”实现Web、WinForm窗体表单数据的填充、收集、清除,和到数据库的CRUD
- 提取jquery的ready()方法单独使用示例