jquery选择符快速提取web表单数据示例


Posted in Javascript onMarch 27, 2014

本人比较懒,在做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的方法如下:

<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选择符快速提取web表单数据示例 

以上例子的表单域比较少,一些东西体现不出,但当表单域的数量比较多少时,就能体现出其方便性,而且重用性较好;再者,如果用jquery异步提交的话,连手动封装json数据的操作都省了。
也有人可能不愿意给表单域增加类似“_postField”的自定义字段,那就直接用本身就有的name也行,这只是jquery选择符的使用不同,其实质还是一样的。

Javascript 相关文章推荐
js split 的用法和定义 js split分割字符串成数组的实例代码
May 13 Javascript
js function定义函数的几种不错方法
Feb 27 Javascript
使用jQuery.wechat构建微信WEB应用
Oct 09 Javascript
jQuery给div,Span, a ,button, radio 赋值与取值
Jun 24 Javascript
D3.js实现饼状图的方法详解
Sep 21 Javascript
JavaScript实现父子dom同时绑定两个点击事件,一个用捕获,一个用冒泡时执行顺序的方法
Mar 30 Javascript
EasyUI实现下拉框多选功能
Nov 07 Javascript
浅析Vue.js 中的条件渲染指令
Nov 19 Javascript
使用layui实现树形结构的方法
Sep 20 Javascript
React学习之受控组件与数据共享实例分析
Jan 06 Javascript
js实现tab栏切换效果
Aug 02 Javascript
解决vuex刷新数据消失问题
Nov 12 Javascript
页面元素绑定jquery toggle后元素隐藏的解决方法
Mar 27 #Javascript
javascript怎么禁用浏览器后退按钮
Mar 27 #Javascript
js弹出确认是否删除对话框
Mar 27 #Javascript
js或jquery实现页面打印可局部打印
Mar 27 #Javascript
window.location.href IE下跳转失效的解决方法
Mar 27 #Javascript
jquery无法设置checkbox选中即没有变成选中状态
Mar 27 #Javascript
JS字符串拼接在ie中都报错的解决方法
Mar 27 #Javascript
You might like
珊瑚虫IP库浅析
2007/02/15 PHP
php下HTTP Response中的Chunked编码实现方法
2008/11/19 PHP
深入PHP nl2br()格式化输出的详解
2013/06/05 PHP
Thinkphp模板中截取字符串函数简介
2014/06/17 PHP
php查看网页源代码的方法
2015/03/13 PHP
超详细的php用户注册页面填写信息完整实例(附源码)
2015/11/17 PHP
php开发时容易忘记的一些技术细节
2016/02/03 PHP
Laravel5.* 打印出执行的sql语句的方法
2017/07/24 PHP
firefox中用javascript实现鼠标位置的定位
2007/06/17 Javascript
javascript格式化日期时间方法汇总
2015/06/19 Javascript
javascript中setAttribute()函数使用方法及兼容性
2015/07/19 Javascript
Nodejs之http的表单提交
2017/07/07 NodeJs
JavaScript中工厂函数与构造函数示例详解
2019/05/06 Javascript
React Native登录之指纹登录篇的示例代码
2020/11/03 Javascript
[57:28]2018DOTA2亚洲邀请赛 4.6 淘汰赛 TNC vs Liquid 第一场
2018/04/10 DOTA
python简单获取数组元素个数的方法
2015/07/13 Python
在Python中使用正则表达式的方法
2015/08/13 Python
对Python3中的input函数详解
2018/04/22 Python
Python向Excel中插入图片的简单实现方法
2018/04/24 Python
查看django版本的方法分享
2018/05/14 Python
python3读取excel文件只提取某些行某些列的值方法
2018/07/10 Python
提升Python效率之使用循环机制代替递归函数
2019/07/23 Python
python同步windows和linux文件
2019/08/29 Python
Python tkinter布局与按钮间距设置方式
2020/03/04 Python
Python爬虫实现模拟点击动态页面
2020/03/05 Python
Python中无限循环需要什么条件
2020/05/27 Python
哥伦比亚最大的网上商店:Linio哥伦比亚
2016/09/25 全球购物
美国著名的户外用品品牌:L.L.Bean
2018/01/05 全球购物
高分子材料与工程专业推荐信
2013/12/01 职场文书
不假外出检讨书
2014/01/27 职场文书
推荐信格式要求
2014/05/09 职场文书
2014年学校工作总结
2014/11/20 职场文书
2014年学校后勤工作总结
2014/12/06 职场文书
房地产财务经理岗位职责
2015/04/08 职场文书
.Net Core导入千万级数据至Mysql的步骤
2021/05/24 MySQL
Java GUI编程菜单组件实例详解
2022/04/07 Java/Android