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 版本]
Mar 20 Javascript
jQuery对象和DOM对象的相互转化实现代码
Mar 02 Javascript
jQuery Mobile页面跳转后未加载外部JS原因分析及解决
Mar 18 Javascript
JQuery中操作Css样式的方法
Feb 12 Javascript
jquery实现图片预加载
Dec 25 Javascript
点击页面任何位置隐藏div的实现方法
Sep 05 Javascript
js正则表达式最长匹配(贪婪匹配)和最短匹配(懒惰匹配)用法分析
Dec 27 Javascript
js读取json文件片段中的数据实例
Mar 09 Javascript
webpack-dev-server自动更新页面方法
Feb 22 Javascript
JS将时间秒转换成天小时分钟秒的字符串
Jul 10 Javascript
微信小程序(订阅消息)功能
Oct 25 Javascript
vue实现登录拦截
Jun 29 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读取mysql乱码,用set names XXX解决的原理分享
2011/12/29 PHP
ThinkPHP实现一键清除缓存方法
2014/06/26 PHP
php实时倒计时功能实现方法详解
2017/02/27 PHP
javascript让setInteval里的函数参数中的this指向特定的对象
2010/01/31 Javascript
js 文本滚动效果的实例代码
2013/08/17 Javascript
javascript实现添加附件功能的方法
2015/11/18 Javascript
jQuery+jsp下拉框联动获取本地数据的方法(附源码)
2015/12/03 Javascript
node模块机制与异步处理详解
2016/03/13 Javascript
Vue.js学习笔记之 helloworld
2016/08/14 Javascript
BootStrap table表格插件自适应固定表头(超好用)
2016/08/24 Javascript
浅谈Node.js:fs文件系统模块
2016/12/08 Javascript
写jQuery插件时的注意点
2017/02/20 Javascript
微信小程序图片宽100%显示并且不变形
2017/06/21 Javascript
详解vue2.0 不同屏幕适配及px与rem转换问题
2018/02/23 Javascript
JS实现DOM节点插入操作之子节点与兄弟节点插入操作示例
2018/07/30 Javascript
vue实现中部导航栏布局功能
2019/07/30 Javascript
原生js实现自定义滚动条组件
2021/01/20 Javascript
python进阶教程之异常处理
2014/08/30 Python
python私有属性和方法实例分析
2015/01/15 Python
Python制作爬虫采集小说
2015/10/25 Python
Python中字符串与编码示例代码
2019/05/20 Python
python数据处理之如何选取csv文件中某几行的数据
2019/09/02 Python
基于css3的属性transition制作菜单导航效果
2015/09/01 HTML / CSS
英国电子产品购物网站:TobyDeals
2018/07/30 全球购物
迟到检讨书大全
2014/01/25 职场文书
优秀团支部事迹材料
2014/02/08 职场文书
各营销点岗位职责范本
2014/03/05 职场文书
机关党员2014全国两会学习心得体会
2014/03/10 职场文书
公司离职证明标准样本
2014/10/05 职场文书
诉讼授权委托书
2014/10/15 职场文书
房屋租赁合同协议书范本
2014/10/19 职场文书
婚礼父母答谢词
2015/01/04 职场文书
圣诞节开幕词
2015/01/29 职场文书
2016党员干部反腐倡廉心得体会
2016/01/13 职场文书
Python if else条件语句形式详解
2022/03/24 Python
Android自定义双向滑动控件
2022/04/19 Java/Android