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 相关文章推荐
setInterval,setTimeout与jquery混用的问题
Apr 08 Javascript
jQuery通过Ajax返回JSON数据
Apr 28 Javascript
JavaScript和JQuery获取DIV值的方法示例
Mar 07 Javascript
vue拦截器Vue.http.interceptors.push使用详解
Apr 22 Javascript
详解webpack 配合babel 将es6转成es5 超简单实例
May 02 Javascript
jQuery常用选择器详解
Jul 17 jQuery
iframe与主框架跨域相互访问实现方法
Sep 14 Javascript
详谈js中标准for循环与foreach(for in)的区别
Nov 02 Javascript
微信小程序基于picker实现级联菜单
Feb 15 Javascript
layer的prompt弹出框,点击回车,触发确定事件的方法
Sep 06 Javascript
为什么JavaScript中0.1 + 0.2 != 0.3
Dec 03 Javascript
如何用JavaScipt测网速
May 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
PHP的5个安全措施小结
2012/07/17 PHP
PHP中对缓冲区的控制实现代码
2013/09/29 PHP
WordPress自定义时间显示格式
2015/03/27 PHP
解读PHP中的垃圾回收机制
2015/08/10 PHP
PHP实现Huffman编码/解码的示例代码
2018/04/20 PHP
实现JavaScript中继承的三种方式
2009/10/16 Javascript
JavaScript 字符串处理函数使用小结
2010/12/02 Javascript
基于SVG的web页面图形绘制API介绍及编程演示
2013/06/28 Javascript
两款JS脚本判断手机浏览器类型跳转WAP手机网站
2015/10/16 Javascript
整理AngularJS框架使用过程当中的一些性能优化要点
2016/03/05 Javascript
AngularJS入门教程之MVC架构实例分析
2016/11/01 Javascript
bootstrap中的 form表单属性role=&quot;form&quot;的作用详解
2017/01/20 Javascript
Node.js连接MongoDB数据库产生的问题
2017/02/08 Javascript
在vue中获取dom元素内容的方法
2017/07/10 Javascript
使用ionic(选项卡栏tab) icon(图标) ionic上拉菜单(ActionSheet) 实现通讯录界面切换实例代码
2017/10/20 Javascript
详解node child_process模块学习笔记
2018/01/24 Javascript
js使用Promise实现简单的Ajax缓存
2018/11/14 Javascript
解决layui动态加载复选框无法选中的问题
2019/09/20 Javascript
JQuery常用选择器功能与用法实例分析
2019/12/23 jQuery
Vue3新特性之在Composition API中使用CSS Modules
2020/07/13 Javascript
Python多进程通信Queue、Pipe、Value、Array实例
2014/11/21 Python
python判断列表的连续数字范围并分块的方法
2018/11/16 Python
django使用LDAP验证的方法示例
2018/12/10 Python
Python3之手动创建迭代器的实例代码
2019/05/22 Python
使用Pyinstaller转换.py文件为.exe可执行程序过程详解
2019/08/06 Python
Numpy的简单用法小结
2019/08/28 Python
python如何调用字典的key
2020/05/25 Python
浅谈python出错时traceback的解读
2020/07/15 Python
金宝贝童装官网:Gymboree
2016/08/31 全球购物
Jeep牧马人、切诺基和自由人零配件:4 Wheel Drive Hardware
2017/07/02 全球购物
小米俄罗斯授权商店:Xiaomi俄罗斯
2019/12/08 全球购物
报关员个人职业生涯规划书
2014/03/12 职场文书
2014年图书管理员工作总结
2014/12/01 职场文书
2014年语文教学工作总结
2014/12/17 职场文书
员工辞退通知书
2015/04/17 职场文书
Python并发编程实例教程之线程的玩法
2021/06/20 Python