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引用对象的方法
Jan 11 Javascript
jquery parent和parents的区别分析
Oct 02 Javascript
使用GruntJS构建Web程序之构建篇
Jun 04 Javascript
不定义JQuery插件 不要说会JQuery
Mar 07 Javascript
jQuery封装的屏幕居中提示信息代码
Jun 08 Javascript
JSON格式的时间/Date(2367828670431)/格式转为正常的年-月-日 格式的代码
Jul 27 Javascript
webpack 1.x升级过程中的踩坑总结大全
Aug 09 Javascript
深入理解ES6的迭代器与生成器
Aug 19 Javascript
详解vue更改头像功能实现
Apr 28 Javascript
vue 动态表单开发方法案例详解
Dec 02 Javascript
js实现文字头像的生成代码
Mar 07 Javascript
基于openlayers实现角度测量功能
Sep 28 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通过header实现文本文件下载的代码
2010/08/08 PHP
不重新编译PHP为php增加openssl模块的方法
2011/06/14 PHP
PHP+MySQL实现输入页码跳转到指定页面功能示例
2018/06/01 PHP
用js实现层随着内容大小动态渐变改变 推荐
2009/12/19 Javascript
浅析JavaScript中两种类型的全局对象/函数
2013/12/05 Javascript
Jquery ajaxStart()与ajaxStop()方法(实例讲解)
2013/12/18 Javascript
jQuery如何获取同一个类标签的所有值(默认无法获取)
2014/09/25 Javascript
多个jQuery版本共存的处理方案
2015/03/17 Javascript
JavaScript中的some()方法使用详解
2015/06/09 Javascript
浅谈javascript中return语句
2015/07/15 Javascript
针对初学者的jQuery入门指南
2015/08/15 Javascript
JavaScript编写点击查看大图的页面半透明遮罩层效果实例
2016/05/09 Javascript
微信小程序 获取相册照片实例详解
2016/11/16 Javascript
javascript 构建模块化开发过程解析
2019/09/11 Javascript
layui数据表格重载实现往后台传参
2019/11/15 Javascript
js实现一款简单踩白块小游戏(曾经很火)
2019/12/02 Javascript
基于Vue的侧边目录组件的实现
2020/02/05 Javascript
JS实现联想、自动补齐国家或地区名称的功能
2020/07/07 Javascript
Element Alert警告的具体使用方法
2020/07/27 Javascript
Python中IPYTHON入门实例
2015/05/11 Python
MySQL中表的复制以及大型数据表的备份教程
2015/11/25 Python
pandas多级分组实现排序的方法
2018/04/20 Python
Python3网络爬虫开发实战之极验滑动验证码的识别
2019/08/02 Python
Python实现代码统计工具
2019/09/19 Python
Python实现图片查找轮廓、多边形拟合、最小外接矩形代码
2020/07/14 Python
python文件排序的方法总结
2020/09/13 Python
详解查看Python解释器路径的两种方式
2020/10/15 Python
MAC彩妆澳洲官网:M·A·C AU
2021/01/17 全球购物
高中生自我评价个人范文
2013/11/09 职场文书
反腐倡廉警示教育活动心得体会
2014/09/04 职场文书
党员对照检查材料思想汇报
2014/09/16 职场文书
金榜题名主持词
2015/07/02 职场文书
Matlab如何实现矩阵复制扩充
2021/06/02 Python
MySQL 如何限制一张表的记录数
2021/09/14 MySQL
常用的文件对应的MIME类型汇总
2022/04/26 HTML / CSS
使用pd.merge表连接出现多余行的问题解决
2022/06/16 Python