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实现菜单感应鼠标滑动动画效果的方法
Feb 28 Javascript
js实现密码强度检测【附示例】
Mar 30 Javascript
浅谈JS原生Ajax,GET和POST
Jun 08 Javascript
详解Vue组件之间的数据通信实例
Jun 17 Javascript
在vue中获取dom元素内容的方法
Jul 10 Javascript
vue-prop父组件向子组件进行传值的方法
Mar 01 Javascript
Vue 源码分析之 Observer实现过程
Mar 29 Javascript
解决Mac安装thrift因bison报错的问题
May 17 Javascript
微信开发之企业付款到银行卡接口开发的示例代码
Sep 18 Javascript
Vue实现摇一摇功能(兼容ios13.3以上)
Jan 26 Vue.js
JavaScript展开运算符和剩余运算符的区别详解
Feb 18 Javascript
vue3获取当前路由地址
Feb 18 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
微盾PHP脚本加密专家php解密算法
2020/09/13 PHP
介绍一些PHP判断变量的函数
2012/04/24 PHP
以实例全面讲解PHP中多进程编程的相关函数的使用
2015/08/18 PHP
php结合md5实现的加密解密方法
2016/01/25 PHP
php curl简单采集图片生成base64编码(并附curl函数参数说明)
2019/02/15 PHP
PHP面向对象程序设计之构造方法和析构方法详解
2019/06/13 PHP
Laravel 解决419错误 -ajax请求错误的问题(CSRF验证)
2019/10/25 PHP
Javascript打印网页部分内容的脚本
2008/11/17 Javascript
另一个javascript小测验(代码集合)
2011/07/27 Javascript
JSCode all of Brower 全局屏蔽网页右键功能 具体实现
2013/06/05 Javascript
Javascript中数组sort和reverse用法分析
2014/12/30 Javascript
easyui Draggable组件实现拖动效果
2015/08/19 Javascript
实例讲解jQuery EasyUI tree中state属性慎用
2016/04/01 Javascript
解决jquery无法找到其他父级子集问题的方法
2016/05/10 Javascript
js代码延迟一定时间后执行一个函数的实例
2017/02/15 Javascript
轻松搞定jQuery+JSONP跨域请求的解决方案
2018/03/06 jQuery
微信小程序中显示倒计时代码实例
2019/05/09 Javascript
Vue组件基础用法详解
2020/02/05 Javascript
JavaScript将数组转换为链表的方法
2020/02/16 Javascript
js瀑布流布局的实现
2020/06/28 Javascript
vue+elementui实现点击table中的单元格触发事件--弹框
2020/07/18 Javascript
[02:39]DOTA2英雄基础教程 天怒法师
2013/11/29 DOTA
python爬虫爬取淘宝商品信息
2018/02/23 Python
python requests 库请求带有文件参数的接口实例
2019/01/03 Python
python实现统计代码行数的小工具
2019/09/19 Python
python中安装django模块的方法
2020/03/12 Python
python 发送邮件的四种方法汇总
2020/12/02 Python
pandas apply使用多列计算生成新的列实现示例
2021/02/24 Python
教你如何一步一步用Canvas写一个贪吃蛇
2018/10/22 HTML / CSS
关于HTML5的安全问题开发人员需要牢记的
2012/06/21 HTML / CSS
HTML5实现移动端点击翻牌功能
2020/10/23 HTML / CSS
说出ArrayList,Vector, LinkedList的存储性能和特性
2015/01/04 面试题
自荐书范文
2013/12/08 职场文书
学生会主席竞聘书
2014/03/31 职场文书
办公室年度工作总结2015
2015/05/21 职场文书
Python OpenCV形态学运算示例详解
2022/04/07 Python