jQuery表单数据收集成key/value对象

来源:互联网 发布:海上知生机搜救队视频 编辑:程序博客网 时间:2024/06/05 01:53

常常遇到需要$.get或者$.post一个表单数据,而各种各样的input、textarea、radio、checkbox等类型数据,如果想通过jQuery来提交,你必须一个一个的收集数据然后整理成一个JSON格式的{key:value, key:value...}数据,然后再提交到一个地址,为了解决这个郁闷的情况,我自己原创了一个JS方法,自动在提交前收集数据,而无须手动一个个地去整理,代码如下,大家可以尽情转载试用,但出问题不负责哈哈,你可以完善它:

// JavaScript Document/** * 检测数组中是否包含与指定值相同的单元 * 成功则返回值相同的第一个位置,没有相同的则返回FALSH */Array.prototype.contain = function(_val){if(this.length <= 0) return false;for(var i=0;i<this.length;i++){if(this[i] == _val) return i;}return false;};// 清空数组,并还原页面效果Array.prototype.clear = function(){this.splice(0, this.length);};// 收集表单数据项目(还有个textarea中的换行问题是通过转换成<br/>解决的,大家自己完善)function formdata(_id) {var dd = new Object;var val = '';var tag = '';var name = '';// 处理text、checkbox、select、textarea数据$('#'+_id+' input[type=text],#'+_id+' input[type=hidden],#'+_id+' input[type=checkbox],#'+_id+' select,#'+_id+' textarea').each(function(){val = $(this).val();tag = this.tagName.toUpperCase();if ($(this).attr('type') == 'checkbox') val = ($(this).attr('checked') ? val : '');// 新方法(待测试)//val = val.replace(/\r/g, '');//val = val.replace(/\n/g, '[n]');//eval('dd.'+$(this).attr('name')+'="'+val+'";');//eval('dd.'+$(this).attr('name')+'=dd.'+$(this).attr('name')+'.replace(/\\[n\\]/g, "\\n")');// 原方法if (tag == 'TEXTAREA') val = val.replace(/[\r\n]/g, '<br />');name = ($(this).attr('name') == "" ? ($(this).attr('id') == "" ? "NULL" : $(this).attr('id')) : $(this).attr('name'));if(name != "NULL") eval('dd.'+name+'="'+val+'";');});// 处理radio数据var radios = new Array();var tname = '';var size = 0;$('#'+_id+' input[type=radio]').each(function(){tname = $(this).attr('name');if (radios.contain(tname) == false) radios.push(tname);});size = radios.length;for (var i=0; i<size; i++) {val = $('#'+_id+' input[type=radio][name='+radios[i]+'][checked]').val();if (val == undefined) val = '';eval('dd.'+radios[i]+'="'+val+'";');}radios.clear();return dd;}// 测试用途:输出所有表单数据function allpro ( obj ) { // 用来保存所有的属性名称和值 var props = "";// 开始遍历 for ( var p in obj ){ // 方法 if ( typeof ( obj [ p ]) == " function " ){ obj [ p ]() ; } else { props += p + " = " + obj [ p ] + " \t " ; } } alert( props ) ; } 
原创粉丝点击