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 相关文章推荐
JS 继承实例分析
Nov 04 Javascript
js location.replace与location.reload的区别
Sep 08 Javascript
replace()方法查找字符使用示例
Oct 28 Javascript
js中AppendChild与insertBefore的用法详细解析
Dec 16 Javascript
javascript算法题:求任意一个1-9位不重复的N位数在该组合中的大小排列序号
Apr 01 Javascript
浅谈Javascript中Object与Function对象
Sep 26 Javascript
Vue 2.0+Vue-router构建一个简单的单页应用(附源码)
Mar 14 Javascript
JS实现遍历不规则多维数组的方法
Mar 21 Javascript
解决layUI的页面显示不全的问题
Sep 20 Javascript
基于vue-draggable 实现三级拖动排序效果
Jan 10 Javascript
详解JavaScript 高阶函数
Sep 14 Javascript
vue3如何优雅的实现移动端登录注册模块
Mar 29 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与XML、XSLT、Mysql的结合运用实现代码
2009/11/19 PHP
PHP读取xml方法介绍
2013/01/12 PHP
PHP计数器的实现代码
2013/06/08 PHP
php 模拟GMAIL,HOTMAIL(MSN),YAHOO,163,126邮箱登录的详细介绍
2013/06/18 PHP
php PDO判断连接是否可用的实现方法
2017/04/03 PHP
PHP二维数组实现去除重复项的方法【保留各个键值】
2017/12/21 PHP
PHP后门隐藏的一些技巧总结
2020/11/04 PHP
详解强大的jQuery选择器之基本选择器、层次选择器
2012/02/07 Javascript
jquery append()方法与html()方法的区别及使用介绍
2014/08/01 Javascript
解决JS请求服务器gbk文件乱码的问题
2015/10/16 Javascript
require.js的用法详解
2015/10/20 Javascript
JS模态窗口返回值兼容问题的完美解决方法
2016/05/28 Javascript
jQuery插件WebUploader实现文件上传
2016/11/07 Javascript
jquery Easyui Datagrid实现批量操作(编辑,删除,添加)
2017/02/20 Javascript
JavaScript高阶教程之“==”隐藏下的类型转换
2019/04/11 Javascript
让mocha支持ES6模块的方法实现
2020/01/14 Javascript
[54:26]完美世界DOTA2联赛PWL S3 Forest vs Rebirth 第一场 12.10
2020/12/12 DOTA
Python中的with语句与上下文管理器学习总结
2016/06/28 Python
在 Python 应用中使用 MongoDB的方法
2017/01/05 Python
python中的set实现不重复的排序原理
2018/01/24 Python
Python中max函数用于二维列表的实例
2018/04/03 Python
python的scikit-learn将特征转成one-hot特征的方法
2018/07/10 Python
Django框架会话技术实例分析【Cookie与Session】
2019/05/24 Python
python os.fork() 循环输出方法
2019/08/08 Python
python处理自动化任务之同时批量修改word里面的内容的方法
2019/08/23 Python
Python with关键字,上下文管理器,@contextmanager文件操作示例
2019/10/17 Python
Python如何实现在字符串里嵌入双引号或者单引号
2020/03/02 Python
.NET笔试题(20个问题)
2016/02/02 面试题
什么叫应用程序域?什么是受管制的代码?什么是强类型系统?什么是装箱和拆箱?
2016/08/13 面试题
工作收入证明模板
2015/06/12 职场文书
堂吉诃德读书笔记
2015/06/30 职场文书
八年级语文教学反思
2016/03/03 职场文书
股东合作协议书模板2篇
2019/11/05 职场文书
详解Go语言Slice作为函数参数的使用
2021/07/02 Golang
利用Python实现模拟登录知乎
2022/05/25 Python
Win10本地连接不见了怎么恢复? win10系统电脑本地连接不见了解决方法
2023/01/09 数码科技