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 相关文章推荐
jQuery创建插件的代码分析
Apr 14 Javascript
JQuery 1.6发布 性能提升,同时包含大量破坏性变更
May 10 Javascript
JavaScript中停止执行setInterval和setTimeout事件的方法
May 14 Javascript
基于jQuery实现带动画效果超炫酷的弹出对话框(附源码下载)
Feb 22 Javascript
基于BootStrap Metronic开发框架经验小结【六】对话框及提示框的处理和优化
May 12 Javascript
基于bootstrap实现广告轮播带图片和文字效果
Jul 22 Javascript
前端程序员必须知道的高性能Javascript知识
Aug 24 Javascript
简单几步实现返回顶部效果
Dec 05 Javascript
vue绑定的点击事件阻止冒泡的实例
Feb 08 Javascript
vuex中store存储store.commit和store.dispatch的用法
Jul 24 Javascript
js实现计算器功能
Aug 10 Javascript
原生js生成图片验证码
Oct 11 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
怎么在Windows系统中搭建php环境
2013/08/31 PHP
jquery 3D 标签云示例代码
2014/06/12 Javascript
通过JS来动态的修改url,实现对url的增删查改
2014/09/01 Javascript
jQuery实现动态添加和删除一个div
2015/08/12 Javascript
JavaScript中关键字 in 的使用方法详解
2016/10/17 Javascript
浅谈angular2的http请求返回结果的subcribe注意事项
2017/03/01 Javascript
Vue.js如何优雅的进行form validation
2017/04/07 Javascript
解决AngualrJS页面刷新导致异常显示问题
2017/04/20 Javascript
jquery处理checkbox(复选框)是否被选中实例代码
2017/06/12 jQuery
vue.js源代码core scedule.js学习笔记
2017/07/03 Javascript
js+html5实现复制文字按钮
2017/07/15 Javascript
vue单页应用在页面刷新时保留状态数据的方法
2018/09/21 Javascript
vue使用微信JS-SDK实现分享功能
2019/08/23 Javascript
使用Vue实现调用接口加载页面初始数据
2019/10/28 Javascript
vue设置导航栏、侧边栏为公共页面的例子
2019/11/01 Javascript
react使用CSS实现react动画功能示例
2020/05/18 Javascript
[07:59]2014DOTA2叨叨刀塔 林熊猫称被邀请赛现场盛况震撼
2014/07/21 DOTA
跟老齐学Python之有容乃大的list(3)
2014/09/15 Python
解析Python中的eval()、exec()及其相关函数
2017/12/20 Python
python放大图片和画方格实现算法
2018/03/30 Python
PyTorch读取Cifar数据集并显示图片的实例讲解
2018/07/27 Python
Python命令行参数解析工具 docopt 安装和应用过程详解
2019/09/26 Python
使用turtle绘制五角星、分形树
2019/10/06 Python
python numpy数组复制使用实例解析
2020/01/10 Python
Python类和实例的属性机制原理详解
2020/03/21 Python
Python 没有main函数的原因
2020/07/10 Python
法人代表委托书
2014/04/04 职场文书
《鸿门宴》教学反思
2014/04/22 职场文书
小学数学课后反思
2014/04/23 职场文书
主题班会开场白
2015/06/01 职场文书
小学班主任工作经验交流材料
2015/11/02 职场文书
2019年大学生学年自我鉴定!
2019/03/25 职场文书
JavaScript控制台的更多功能
2021/04/28 Javascript
MySQL 自定义变量的概念及特点
2021/05/13 MySQL
总结一些Java常用的加密算法
2021/06/11 Java/Android
MySQL 原理优化之Group By的优化技巧
2022/08/14 MySQL