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 相关文章推荐
你需要知道的JavsScript可以做什么?
Jun 29 Javascript
对象无length属性时IE6/IE7中无法将其转换成伪数组(ArrayLike)
Jul 31 Javascript
调试代码导致IE出错的避免方法
Apr 04 Javascript
js隐式全局变量造成的bug示例代码
Apr 22 Javascript
JavaScript设计模式之外观模式介绍
Dec 28 Javascript
JavaScript希尔排序、快速排序、归并排序算法
May 08 Javascript
简单解析JavaScript中的__proto__属性
May 10 Javascript
bootstrap datepicker插件默认英文修改为中文
Jul 28 Javascript
jQuery实现基本淡入淡出效果的方法详解
Sep 05 jQuery
详解如何构建一个Angular6的第三方npm包
Sep 07 Javascript
vue实现歌手列表字母排序下拉滚动条侧栏排序实时更新
May 14 Javascript
ES6 解构赋值的原理及运用
May 25 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
全国FM电台频率大全 - 18 湖南省
2020/03/11 无线电
PHP生成静态页面详解
2006/12/05 PHP
关于IIS php调用com组件的权限问题
2012/01/11 PHP
ajax完美实现两个网页 分页功能的实例代码
2013/04/16 PHP
PHP动态生成指定大小随机图片的方法
2016/03/25 PHP
php中array_unshift()修改数组key注意事项分析
2016/05/16 PHP
php mysqli查询语句返回值类型实例分析
2016/06/29 PHP
ThinkPHP 5.x远程命令执行漏洞复现
2019/09/23 PHP
ie6下png图片背景不透明的解决办法使用js实现
2013/01/11 Javascript
jQuery.Validate验证库的使用介绍
2013/04/26 Javascript
jQuery bxCarousel实现图片滚动切换效果示例代码
2013/05/15 Javascript
JS实现遮罩层效果的简单实例
2013/11/12 Javascript
JS控制日期显示的小例子
2013/11/23 Javascript
jquery教程ajax请求json数据示例
2014/01/13 Javascript
node.js中module.exports与exports用法上的区别
2016/09/02 Javascript
sea.js常用的api简易文档
2016/11/15 Javascript
基于Node的React图片上传组件实现实例代码
2017/05/10 Javascript
Vue.js 动态为img的src赋值方法
2018/03/14 Javascript
如何在Vue中使用CleaveJS格式化你的输入内容
2018/12/14 Javascript
Next.js实现react服务器端渲染的方法示例
2019/01/06 Javascript
vue-resource post数据时碰到Django csrf问题的解决
2020/03/13 Javascript
pygame实现俄罗斯方块游戏(基础篇2)
2019/10/29 Python
python shutil文件操作工具使用实例分析
2019/12/25 Python
Python3 pywin32模块安装的详细步骤
2020/05/26 Python
如何基于Python爬虫爬取美团酒店信息
2020/11/03 Python
pytorch简介
2020/11/11 Python
澳大利亚运动鞋商店:Platypus Shoes
2019/09/27 全球购物
毕业生动漫设计求职信
2013/10/11 职场文书
会议室标语
2014/06/21 职场文书
竞选班干部演讲稿100字
2014/08/20 职场文书
2015年教师新年寄语
2014/12/08 职场文书
五年级小学生评语
2014/12/26 职场文书
师范生小学见习总结
2015/06/23 职场文书
《所见》教学反思
2016/02/23 职场文书
用Python爬虫破解滑动验证码的案例解析
2021/05/06 Python
MySQL 1130异常,无法远程登录解决方案详解
2021/08/23 MySQL