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 相关文章推荐
User Scripts: Video Download by User Scripts
May 14 Javascript
Jquery实现简单的动画效果代码
Mar 18 Javascript
jqGrid读取选择的多行的某个属性代码
May 18 Javascript
JavaScript函数详解
Feb 27 Javascript
JavaScript中reduce()方法的使用详解
Jun 09 Javascript
jquery特效 点击展示与隐藏全文
Dec 09 Javascript
JS实现简单易用的手机端浮动窗口显示效果
Sep 07 Javascript
select下拉框插件jquery.editable-select详解
Jan 22 Javascript
微信小程序 配置顶部导航条标题颜色的实现方法
Sep 20 Javascript
在webstorm开发微信小程序之使用阿里自定义字体图标的方法
Nov 15 Javascript
微信小程序canvas实现签名功能
Jan 19 Javascript
详解TypeScript的基础类型
Feb 18 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开发大型项目的一点经验
2006/10/09 PHP
php设计模式 Command(命令模式)
2011/06/26 PHP
php中static和const关键字用法分析
2016/12/07 PHP
php7 错误处理机制修改实例分析
2020/05/25 PHP
javascript中利用数组实现的循环队列代码
2010/01/24 Javascript
jquery 图片 上一张 下一张 链接效果(续篇)
2010/04/20 Javascript
jQueryUI的Dialog的简单封装
2010/06/07 Javascript
jquer之ajaxQueue简单实现代码
2011/09/15 Javascript
IE下支持文本框和密码框placeholder效果的JQuery插件分享
2015/01/31 Javascript
js兼容火狐获取图片宽和高的方法
2015/05/21 Javascript
jQuery实现从身份证号中获取出生日期和性别的方法分析
2016/02/25 Javascript
jquery获取input type=text中的值的各种方式(总结)
2016/12/02 Javascript
JavaScript中常见的八个陷阱总结
2017/06/28 Javascript
js实现以最简单的方式将数组元素添加到对象中的方法
2017/12/20 Javascript
JavaScript使用math.js进行精确计算操作示例
2018/06/19 Javascript
jQuery实现轮播图及其原理详解
2020/04/12 jQuery
vue项目中使用bpmn为节点添加颜色的方法
2020/04/30 Javascript
基于JS实现table导出Excel并保留样式
2020/05/19 Javascript
一篇文章带你使用Typescript封装一个Vue组件(简单易懂)
2020/06/05 Javascript
JavaScript动态生成表格的示例
2020/11/02 Javascript
微信小程序实现购物车小功能
2020/12/30 Javascript
[00:32]DOTA2上海特级锦标赛 Ehome战队宣传片
2016/03/03 DOTA
[42:52]Optic vs Serenity 2018国际邀请赛淘汰赛BO3 第二场 8.22
2018/08/23 DOTA
Python面向对象程序设计之继承与多继承用法分析
2018/07/13 Python
Python读取xlsx文件的实现方法
2019/07/04 Python
python实现的批量分析xml标签中各个类别个数功能示例
2019/12/30 Python
如何通过python实现人脸识别验证
2020/01/17 Python
Pytorch 实现计算分类器准确率(总分类及子分类)
2020/01/18 Python
Python并发爬虫常用实现方法解析
2020/11/19 Python
HTML5 canvas画矩形时出现边框样式不一致的解决方法
2013/10/14 HTML / CSS
澳大利亚旅游网站:Lastminute
2017/08/07 全球购物
建筑设计所实习生自我鉴定
2013/09/25 职场文书
企事业单位求职者的自我评价
2013/12/28 职场文书
教师见习报告范文
2014/11/03 职场文书
学校艾滋病宣传活动总结
2015/05/09 职场文书
使用CSS实现按钮边缘跑马灯动画
2023/05/07 HTML / CSS