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 相关文章推荐
JavaScript中的History历史对象
Jan 16 Javascript
对 lightbox JS 图片控件进行了一下改造, 使其他支持复杂的图片说明
Mar 20 Javascript
原生js编写设为首页兼容ie、火狐和谷歌
Jun 05 Javascript
JavaScript中的对象的extensible属性介绍
Dec 30 Javascript
JavaScript Math.round() 方法
Dec 18 Javascript
理解javascript中DOM事件
Dec 25 Javascript
js省市县三级联动效果实例
Apr 15 Javascript
jQuery实现点击查看大图并以弹框的形式居中
Aug 08 Javascript
webpack实现热更新(实施同步刷新)
Jul 28 Javascript
详解在create-react-app使用less与antd按需加载
Dec 06 Javascript
Vue组件间通信 Vuex的用法解析
Aug 05 Javascript
微信小程序getLocation 需要在app.json中声明permission字段
Mar 03 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
使用php转义输出HTML到JavaScript
2015/03/27 PHP
php动态绑定变量的用法
2015/06/16 PHP
PHP实现小程序批量通知推送
2018/11/27 PHP
jQuery 判断页面元素是否存在的代码
2009/08/14 Javascript
jQuery动态设置form表单的enctype值(实现代码)
2013/07/04 Javascript
Javascript中3个需要注意的运算符
2015/04/02 Javascript
修复jQuery tablesorter无法正确排序的bug(加千分位数字后)
2016/03/30 Javascript
jQuery+PHP实现微信转盘抽奖功能的方法
2016/05/25 Javascript
JavaScript学习笔记整理_简单实现枚举类型,扑克牌应用
2016/09/19 Javascript
Javascript动画效果(4)
2016/10/11 Javascript
详解Angular.js的$q.defer()服务异步处理
2016/11/06 Javascript
微信公众平台开发教程(六)获取个性二维码的实例
2016/12/02 Javascript
vue-router 导航钩子的具体使用方法
2017/08/31 Javascript
vue.js中npm安装教程图解
2018/04/10 Javascript
Vue中&quot;This dependency was not found&quot;问题的解决方法
2018/06/19 Javascript
webpack4 入门最简单的例子介绍
2018/09/05 Javascript
Vuex的基本概念、项目搭建以及入坑点
2018/11/04 Javascript
JS匿名函数内部this指向问题详析
2019/05/10 Javascript
Vue Autocomplete 自动完成功能简单示例
2019/05/25 Javascript
浅谈react-router@4.0 使用方法和源码分析
2019/06/04 Javascript
详解小程序如何动态绑定点击的执行方法
2019/11/26 Javascript
JavaScript常用8种数组去重代码实例
2020/09/09 Javascript
ES6的循环与可迭代对象示例详解
2021/01/31 Javascript
[08:47]2018国际邀请赛 OG战队举杯时刻
2018/08/29 DOTA
用Python登录Gmail并发送Gmail邮件的教程
2015/04/17 Python
Python探索之实现一个简单的HTTP服务器
2017/10/28 Python
python对视频画框标记后保存的方法
2018/12/07 Python
Python手绘可视化工具cutecharts使用实例
2019/12/05 Python
tensorflow实现从.ckpt文件中读取任意变量
2020/05/26 Python
详解pandas.DataFrame.plot() 画图函数
2020/06/14 Python
小学生感恩演讲稿
2014/04/25 职场文书
暖通工程师岗位职责
2014/06/12 职场文书
爱心捐书活动总结
2014/07/05 职场文书
意向书范本
2014/07/29 职场文书
森马旗舰店双十一营销方案
2014/09/29 职场文书
学前班学生评语
2014/12/29 职场文书