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 相关文章推荐
use jscript List Installed Software
Jun 11 Javascript
js 兼容多浏览器的回车和鼠标焦点事件代码(IE6/7/8,firefox,chrome)
Apr 14 Javascript
javascript的offset、client、scroll使用方法详解
Dec 25 Javascript
javascript使用数组的push方法完成快速排序
Sep 15 Javascript
巧用数组制作图片切换js代码
Nov 29 Javascript
JavaScript实现瀑布流以及加载效果
Feb 11 Javascript
Vue计算属性的学习笔记
Mar 22 Javascript
详解js静态资源文件请求的处理
Aug 01 Javascript
实时监控input框,实现输入框与下拉框联动的实例
Jan 23 Javascript
jquery层次选择器的介绍
Jan 18 jQuery
Vue分页器实现原理详解
Jun 28 Javascript
微信小程序项目总结之记账小程序功能的实现(包括后端)
Aug 20 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
搜索和替换文件或目录的一个好类--很实用
2006/10/09 PHP
利用PHP脚本在Linux下用md5函数加密字符串的方法
2015/06/29 PHP
PHP通过串口实现发送短信
2015/07/08 PHP
6个超实用的PHP代码片段
2015/08/10 PHP
WordPress中限制非管理员用户在文章后只能评论一次
2015/12/31 PHP
JS 获取span标签中的值的代码 支持ie与firefox
2009/08/24 Javascript
让mayfish支持mysqli数据库驱动的实现方法
2010/05/22 Javascript
JavaScript中的作用域链和闭包
2012/06/30 Javascript
Jquery获得控件值的三种方法总结
2014/02/13 Javascript
浅谈Javascript 数组与字典
2015/01/29 Javascript
详解javascript函数的参数
2015/11/10 Javascript
全面解析Bootstrap表单使用方法(表单按钮)
2015/11/24 Javascript
JavaScript 经典实例日常收集整理(常用经典)
2016/03/30 Javascript
jquery制做精致的倒计时特效
2016/06/13 Javascript
微信公众号支付H5调用支付解析
2016/11/04 Javascript
基于jQuery的checkbox全选问题分析
2016/11/18 Javascript
Angularjs+bootstrap+table多选(全选)支持单击行选中实现编辑、删除功能
2017/03/27 Javascript
详解webpack-dev-server使用http-proxy解决跨域问题
2018/01/13 Javascript
jQuery 查找元素操作实例小结
2019/10/02 jQuery
动态实现element ui的el-table某列数据不同样式的示例
2021/01/22 Javascript
解决await在forEach中不起作用的问题
2021/02/25 Javascript
django传值给模板, 再用JS接收并进行操作的实例
2018/05/28 Python
Nuts.com:优质散装,批发坚果、干果和巧克力等
2017/03/21 全球购物
西班牙英格列斯百货法国官网:El Corte Inglés法国
2017/07/09 全球购物
应聘教师自荐信
2013/10/12 职场文书
财务会计人员岗位职责
2013/11/30 职场文书
《赶海》教学反思
2014/04/20 职场文书
安全生产承诺书范文
2014/05/22 职场文书
银行优秀员工事迹材料
2014/05/29 职场文书
我的中国梦演讲稿800字
2014/08/19 职场文书
安阳殷墟导游词
2015/02/10 职场文书
公司行政管理制度范本
2015/08/05 职场文书
Python控制台输出俄罗斯方块移动和旋转功能
2021/04/18 Python
Mysql MVCC机制原理详解
2021/04/20 MySQL
Java实现二维数组和稀疏数组之间的转换
2021/06/27 Java/Android
浅谈MySQL函数
2021/10/05 MySQL