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 相关文章推荐
Javascript处理DOM元素事件实现代码
May 23 Javascript
判断某个字符在一个字符串中是否存在的js代码
Feb 28 Javascript
使用typeof判断function是否存在于上下文
Aug 14 Javascript
做web开发 先学JavaScript
Dec 12 Javascript
学习JavaScript设计模式(多态)
Nov 25 Javascript
关于foreach循环中遇到的问题小结
May 08 Javascript
Vue通过input筛选数据
Oct 26 Javascript
浅谈使用React.setState需要注意的三点
Dec 18 Javascript
jquery将json转为数据字典的实例代码
Oct 11 jQuery
Vue 路由间跳转和新开窗口的方式(query、params)
Dec 25 Javascript
js实现上传按钮并显示缩略图小轮子
May 04 Javascript
原生js滑动轮播封装
Jul 31 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电台频率大全 - 9 上海市
2020/03/11 无线电
Zerg剧情介绍
2020/03/14 星际争霸
从MySQL数据库表中取出随机数据的代码
2007/09/05 PHP
PHP实现清除MySQL死连接的方法
2016/07/23 PHP
PHP入门教程之自定义函数用法详解(创建,调用,变量,参数,返回值等)
2016/09/11 PHP
PHP查看SSL证书信息的方法
2016/09/22 PHP
python进程与线程小结实例分析
2018/11/11 PHP
javascript 按回车键相应按钮提交事件
2009/11/02 Javascript
基于jquery的从一个页面跳转到另一个页面的指定位置的实现代码(带平滑移动的效果)
2011/05/24 Javascript
浅析JavaScript基本类型与引用类型
2014/05/28 Javascript
基于jQuery实现表格的查看修改删除
2016/08/01 Javascript
Vue.js每天必学之指令系统与自定义指令
2016/09/07 Javascript
Angularjs中ng-repeat-start与ng-repeat-end的用法实例介绍
2016/12/31 Javascript
详解操作虚拟dom模拟react视图渲染
2018/07/25 Javascript
bootstrapTable+ajax加载数据 refresh更新数据
2018/08/31 Javascript
基于element-ui组件手动实现单选和上传功能
2018/12/06 Javascript
解决vue scoped html样式无效的问题
2020/10/24 Javascript
[02:53]DOTA2英雄昆卡基础教程
2013/11/25 DOTA
python+matplotlib绘制3D条形图实例代码
2018/01/17 Python
Python requests发送post请求的一些疑点
2018/05/20 Python
python匹配两个短语之间的字符实例
2018/12/25 Python
Python基于matplotlib画箱体图检验异常值操作示例【附xls数据文件下载】
2019/01/07 Python
Python当中的array数组对象实例详解
2019/06/12 Python
Python自动发送和收取邮件的方法
2020/08/12 Python
如何用tempfile库创建python进程中的临时文件
2021/01/28 Python
基于tensorflow __init__、build 和call的使用小结
2021/02/26 Python
html5定位获取当前位置并在百度地图上显示
2014/08/22 HTML / CSS
凯特·丝蓓英国官网:Kate Spade英国
2016/11/07 全球购物
美国最大的家庭鞋类零售商之一:Shoe Carnival
2017/10/06 全球购物
项目合作协议书范本
2014/04/16 职场文书
营销团队口号
2014/06/06 职场文书
初中作文评语集锦
2014/12/25 职场文书
民间借贷被告代理词
2015/05/23 职场文书
基于tensorflow权重文件的解读
2021/05/26 Python
html粘性页脚的具体使用
2022/01/18 HTML / CSS
Java 多线程并发FutureTask
2022/06/28 Java/Android