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公告滚动+AJAX后台得到数据
Apr 14 Javascript
javascript中拼接HTML字符串的最快、最好的方法
Jun 07 Javascript
JavaScript中的console.group()函数详细介绍
Dec 29 Javascript
JS动态改变表格边框宽度的方法
Mar 31 Javascript
ECHO.js 纯javascript轻量级延迟加载的实例代码
May 24 Javascript
jQuery编写设置和获取颜色的插件
Jan 09 Javascript
AngularJS使用ng-inlude指令加载页面失败的原因与解决方法
Jan 19 Javascript
bootstrap轮播模板使用方法详解
Nov 17 Javascript
vue 使用eventBus实现同级组件的通讯
Mar 02 Javascript
jQuery实现鼠标点击处心形漂浮的炫酷效果示例
Apr 12 jQuery
还不懂递归?读完这篇文章保证你会懂
Jul 29 Javascript
vue 项目引入echarts 添加点击事件操作
Sep 09 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
Extended CHM PHP 语法手册之 DIY
2006/10/09 PHP
phpmyadmin 3.4 空密码登录的实现方法
2010/05/29 PHP
PHP中使用mktime获取时间戳的一个黑色幽默分析
2012/05/31 PHP
PHP抽奖算法程序代码分享
2015/10/08 PHP
twig模板获取全局变量的方法
2016/02/05 PHP
[原创]静态页面也可以实现预览 列表不同的显示方式
2006/10/14 Javascript
IE与firefox之jquery用法区别
2008/10/03 Javascript
javascript开发技术大全-第1章javascript概述
2011/07/03 Javascript
JQuery入门——事件切换之hover()方法应用介绍
2013/02/05 Javascript
Js 时间函数getYear()的使用问题探讨
2013/04/01 Javascript
jquery中实现时间戳与日期相互转换
2016/04/12 Javascript
JS原生数据双向绑定实现代码
2017/08/14 Javascript
前端图片懒加载(lazyload)的实现方法(提高用户体验)
2017/08/21 Javascript
vue通过点击事件读取音频文件的方法
2018/05/30 Javascript
angularjs模态框的使用代码实例
2019/12/20 Javascript
vue组件库的在线主题编辑器的实现思路
2020/04/03 Javascript
Python去除列表中重复元素的方法
2015/03/20 Python
python读取word文档的方法
2015/05/09 Python
Python进行数据提取的方法总结
2016/08/22 Python
详解python3实现的web端json通信协议
2016/12/29 Python
基于python的socket实现单机五子棋到双人对战
2020/03/24 Python
Python中的X[:,0]、X[:,1]、X[:,:,0]、X[:,:,1]、X[:,m:n]和X[:,:,m:n]
2020/02/13 Python
简单了解Python write writelines区别
2020/02/27 Python
Python面向对象程序设计之静态方法、类方法、属性方法原理与用法分析
2020/03/23 Python
Python常用断言函数实例汇总
2020/11/30 Python
CSS3文本换行word-wrap解决英文文本超过固定宽度不换行
2013/10/10 HTML / CSS
天猫精选:上天猫,就够了
2016/09/21 全球购物
意大利买卖二手奢侈品网站:LAMPOO
2020/06/03 全球购物
写给女朋友的检讨书
2014/01/28 职场文书
信息与计算科学专业推荐信
2014/02/23 职场文书
个人贷款担保书
2014/04/01 职场文书
运动员口号
2014/06/09 职场文书
学校督导评估方案
2014/06/10 职场文书
2015年世界卫生日活动总结
2015/02/09 职场文书
2015年房地产销售工作总结
2015/04/20 职场文书
redis击穿 雪崩 穿透超详细解决方案梳理
2022/03/17 Redis