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 相关文章推荐
硬盘浏览程序,保存成网页格式便可使用
Dec 03 Javascript
AJAX分页的代码(后台asp.net)
Feb 14 Javascript
JS中getYear()和getFullYear()区别分析
Jul 04 Javascript
JS动态修改表格cellPadding和cellSpacing的方法
Mar 31 Javascript
基于jQuery实现Div窗口震动特效代码-代码简单
Aug 28 Javascript
微信小程序实现左右联动的实战记录
Jul 05 Javascript
vue通过style或者class改变样式的实例代码
Oct 30 Javascript
微信小程序template模版的使用方法
Apr 13 Javascript
vue将后台数据时间戳转换成日期格式
Jul 31 Javascript
JS实现打字游戏
Dec 17 Javascript
如何在JavaScript中使用localStorage详情
Feb 04 Javascript
vue+springboot实现登录验证码
May 27 Vue.js
页面元素绑定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
解析linux下安装memcacheq(mcq)全过程笔记
2013/06/27 PHP
php遍历解析xml字符串的方法
2016/05/05 PHP
thinkphp5 加载静态资源路径与常量的方法
2017/12/24 PHP
用js实现计算代码行数的简单方法附代码
2007/08/13 Javascript
写入cookie的JavaScript代码库 cookieLibrary.js
2009/10/24 Javascript
js实现连续英文字符自动换行兼容ie6 ie7和firefox
2013/09/06 Javascript
JavaScript中自定义事件用法分析
2014/12/23 Javascript
javascript制作游戏开发碰撞检测的封装代码
2015/03/31 Javascript
javascript实现俄罗斯方块游戏的思路和方法
2015/04/27 Javascript
js日期范围初始化得到前一个月日期的方法
2015/05/05 Javascript
localResizeIMG先压缩后使用ajax无刷新上传(移动端)
2015/08/11 Javascript
微信小程序(应用号)简单实例应用及实例详解
2016/09/26 Javascript
javascript动画系列之模拟滚动条
2016/12/13 Javascript
node.js发送邮件email的方法详解
2017/01/06 Javascript
微信小程序去除左上角返回键的实现方法
2020/03/06 Javascript
jquery.validate自定义验证用法实例分析【成功提示与择要提示】
2020/06/06 jQuery
如何使用jQuery操作Cookies方法解析
2020/09/08 jQuery
python记录程序运行时间的三种方法
2017/07/14 Python
详解如何在python中读写和存储matlab的数据文件(*.mat)
2018/02/24 Python
使用Python设计一个代码统计工具
2018/04/04 Python
python用插值法绘制平滑曲线
2021/02/19 Python
如何使用pyinstaller打包32位的exe程序
2019/05/26 Python
python处理大日志文件
2019/07/23 Python
Python 画出来六维图
2019/07/26 Python
Python闭包装饰器使用方法汇总
2020/06/29 Python
python-地图可视化组件folium的操作
2020/12/14 Python
Python实现王者荣耀自动刷金币的完整步骤
2021/01/22 Python
T3官网:头发造型工具
2019/12/26 全球购物
美国购物网站:Clickhere2shop
2021/01/28 全球购物
英国婴儿产品专家:Samuel Johnston
2020/04/20 全球购物
预备党员自我评价范文
2015/03/04 职场文书
离婚起诉书范本
2015/05/18 职场文书
健康教育主题班会
2015/08/14 职场文书
使用css样式设计一个简单的html登陆界面的实现
2021/03/30 HTML / CSS
python中sqllite插入numpy数组到数据库的实现方法
2021/06/21 Python
Redis+Lua脚本实现计数器接口防刷功能(升级版)
2022/02/12 Redis