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

常常遇到需要$.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解决的,大家自己完善)
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, '
'); 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

你可能感兴趣的:(jQuery,AJAX,DOM,网站建设)