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 相关文章推荐
Firefox+FireBug使JQuery的学习更加轻松愉快
Jan 01 Javascript
JavaScript分秒倒计时器实现方法
Feb 02 Javascript
JS实现兼容性较好的随屏滚动效果
Nov 09 Javascript
BootStrap下jQuery自动完成的样式调整
May 30 Javascript
d3.js中冷门却实用的内置函数总结
Feb 04 Javascript
JavaScript 获取元素在父节点中的下标(推荐)
Jun 28 Javascript
JQuery和html+css实现带小圆点和左右按钮的轮播图实例
Jul 22 jQuery
JS高阶函数原理与用法实例分析
Jan 15 Javascript
微信小程序自定义tabBar在uni-app的适配详解
Sep 30 Javascript
vue跳转同一个组件,参数不同,页面接收值只接收一次的解决方法
Nov 05 Javascript
微信小程序单选框自定义赋值
May 26 Javascript
jquery实现点击左右按钮切换图片
Jan 27 jQuery
页面元素绑定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
codeigniter发送邮件并打印调试信息的方法
2015/03/21 PHP
浅析Yii2缓存的使用
2016/05/10 PHP
php实现的XML操作(读取)封装类完整实例
2017/02/23 PHP
PHP PDOStatement::errorCode讲解
2019/01/31 PHP
phpStorm+XDebug+chrome 配置详解
2019/04/01 PHP
PHP实现倒计时功能
2020/11/16 PHP
Js实现自定义右键行为
2015/03/26 Javascript
使用coffeescript编写node.js项目的方法汇总
2015/08/05 Javascript
js中unicode转码方法详解
2015/10/09 Javascript
js老生常谈之this,constructor ,prototype全面解析
2016/04/05 Javascript
Laravel中常见的错误与解决方法小结
2016/08/30 Javascript
html5+CSS 实现禁止IOS长按复制粘贴功能
2016/12/28 Javascript
canvas红包照片实例分享
2017/02/28 Javascript
Vue  webpack 项目自动打包压缩成zip文件的方法
2019/07/24 Javascript
JS数组的高级使用方法示例小结
2020/03/14 Javascript
Vue的全局过滤器和私有过滤器的实现
2020/04/20 Javascript
matplotlib实现热成像图colorbar和极坐标图的方法
2018/12/13 Python
python的debug实用工具 pdb详解
2019/07/12 Python
pandas DataFrame创建方法的方式
2019/08/02 Python
softmax及python实现过程解析
2019/09/30 Python
pycharm设置python文件模板信息过程图解
2020/03/10 Python
python中urllib.request和requests的使用及区别详解
2020/05/05 Python
Python基础教程(一)——Windows搭建开发Python开发环境
2020/07/20 Python
详解CSS3弹性伸缩盒
2020/09/21 HTML / CSS
美国最古老的精致书写工具制造商:A.T. Cross(高仕)
2018/01/30 全球购物
应聘教师自荐信
2013/10/12 职场文书
公路绿化方案
2014/05/12 职场文书
庆六一文艺汇演活动方案
2014/08/26 职场文书
2014年物流工作总结
2014/11/25 职场文书
2014年数学教研组工作总结
2014/12/06 职场文书
社区文明创建工作总结2015
2015/04/21 职场文书
2015年端午节活动方案
2015/05/05 职场文书
pytorch finetuning 自己的图片进行训练操作
2021/06/05 Python
python unittest单元测试的步骤分析
2021/08/02 Python
javascript条件式访问属性和箭头函数介绍
2021/11/17 Javascript
SpringBoot项目多数据源及mybatis 驼峰失效的问题解决方法
2022/07/07 Java/Android