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.simple.tree插件 更简单,兼容性更好的无限树插件
Sep 03 Javascript
jQuery客户端分页实例代码
Nov 18 Javascript
js动态移动滚动条至底部示例代码
Apr 24 Javascript
css如何让浮动元素水平居中
Aug 07 Javascript
jQuery实现的Tab滑动选项卡及图片切换(多种效果)小结
Sep 14 Javascript
Javascript中indexOf()和lastIndexOf应用方法实例
Aug 24 Javascript
利用原生js和jQuery实现单选框的勾选和取消操作的方法
Sep 04 Javascript
详解vue mixins和extends的巧妙用法
Dec 20 Javascript
jQuery实现的记住帐号密码功能完整示例
Aug 03 jQuery
JS实现滑动插件
Jan 15 Javascript
JS如何在不同平台实现多语言方式
Jul 16 Javascript
Vue Element校验validate的实例
Sep 21 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实现链结人气统计
2006/10/09 PHP
PHP面向对象概念
2011/11/06 PHP
PHP fopen 读取带中文URL地址的一点见解
2012/09/25 PHP
php加密解密函数authcode的用法详细解析
2013/10/28 PHP
两千行代码的PHP学习笔记汇总
2014/10/05 PHP
php中fgetcsv()函数用法实例
2014/11/28 PHP
YII动态模型(动态表名)支持分析
2016/03/29 PHP
PHP7 新特性详细介绍
2016/09/06 PHP
php处理抢购类功能的高并发请求
2018/02/08 PHP
JS option location 页面跳转实现代码
2008/12/27 Javascript
小型js框架veryide.librar源代码
2009/03/05 Javascript
Javascript 的addEventListener()及attachEvent()区别分析
2009/05/21 Javascript
javascript sudoku 数独智力游戏生成代码
2010/03/27 Javascript
Ajax提交与传统表单提交的区别说明
2014/02/07 Javascript
简单js代码实现selece二级联动(推荐)
2014/02/18 Javascript
JS自定义对象实现Java中Map对象功能的方法
2015/01/20 Javascript
深入理解JavaScript系列(49):Function模式(上篇)
2015/03/04 Javascript
jquery实现像栅栏一样左右滑出式二级菜单效果代码
2015/08/24 Javascript
浅析Node.js 中 Stream API 的使用
2015/10/23 Javascript
javascript实现简易数码时钟
2020/03/30 Javascript
JavaScript实现网页计算器功能
2020/10/29 Javascript
Javascript节流函数throttle和防抖函数debounce
2020/12/03 Javascript
Python中的上下文管理器和with语句的使用
2018/04/17 Python
python实现简单tftp(基于udp协议)
2018/07/30 Python
Python wxPython库消息对话框MessageDialog用法示例
2018/09/03 Python
python实现简单加密解密机制
2019/03/19 Python
详细介绍Python进度条tqdm的使用
2019/07/31 Python
Pycharm+Python+PyQt5使用详解
2019/09/25 Python
appium+python adb常用命令分享
2020/03/06 Python
Python如何使用input函数获取输入
2020/08/06 Python
Flask处理Web表单的实现方法
2021/01/31 Python
Java软件工程师综合面试题笔试题
2013/09/08 面试题
单位提档介绍信
2014/01/17 职场文书
驳回起诉裁定书
2015/05/19 职场文书
MySQL Shell的介绍以及安装
2021/04/24 MySQL
JavaScript设计模式之原型模式详情
2022/06/21 Javascript