当前位置: 代码迷 >> Web前端 >> jQuery通用表单非空、数值应验和编辑回显处理
  详细解决方案

jQuery通用表单非空、数值应验和编辑回显处理

热度:450   发布时间:2013-08-09 15:16:24.0
jQuery通用表单非空、数值验证和编辑回显处理
/**
 * 调用方式如:if(notNull('enterpriseEdit')==false)return;
 * 1.在需要加非空验证的input标签上直接添加例如notNull=标签名;
 * 2.checkbox类型的input只需要在首个input中加notNull=标签名;
 * 3.select标签中notNull=标签名;
 * @param id 组件的父级组件id,例如table、form的id
 * @returns {Boolean}
 */
function notNull(id){
	var data = jQuery("#"+id+" input[notNull]");
	data.each(function(){
		if($(this).val()==""){
			Ext.Msg.alert('提示',$(this).attr('notNull')+"不能为空!");
			$(this).focus();
			return false;
		}
		if ($(this).attr("type")=="checkbox"){
			var name = $(this).attr("name");
			if ($("input:checked[:checkbox][name='"+name+"']").length==0){
				Ext.Msg.alert('提示',$(this).attr('notNull')+"不能为空!");
				return false;
			}
		}
	});
	var selectData = jQuery("#"+id+" select[notNull]");
	selectData.each(function(){
		if($(this).val()==""){
			Ext.Msg.alert('提示',$(this).attr('notNull')+"不能为空!");
			$(this).focus();
			return false;
		}
	});
	return true;
}

/**
 * 在需要加数字验证的input标签上直接添加例如isDigit=true,调用方式如:isDigit('enterpriseEdit');
 * @param id 组件的父级组件id,例如table、form的id
 */
function isDigit(id){
	var data = jQuery("#"+id+" input[isDigit]");
	data.each(function(){
		$(this).bind('keypress', function (evt) {
		    // 取得键入的实际字符。
		    // 这里用 keyCode 替换 charCode,同样可以获得想要的值(参见前文)
		    var char = String.fromCharCode(evt.keyCode);
		    // 如果不是数字,就不允许输入
		    if (!/^\d*\.{0,1}\d{0,2}$/.test(char)) {
		        evt.preventDefault();
		    }
		});
		$(this).bind('afterpaste', function () {
			$(this).val($(this).val().replace(/[^\d\.]/g,''));
		});
		$(this).bind('keyup', function () {
			$(this).val($(this).val().replace(/[^\d\.]/g,''));
		});
	})
}

/**
 * 表单修改回显,注意:要求表单name和json的key值必须对应,推荐使用数据库字段名
 * @param id 表单组件父级组件ID,如form或是table的id
 * @param json 结果集
 */
function initFormHTML(id,json){
	 var data = $("#"+id+" *[name]");
	 data.each(function() { 
		var value = json[$(this).attr("name")];
    	if(value != null){
        	var type = $(this).attr("type");          
        	if(type=="checkbox"||type=="radio"){
           	var valueArray = value.split("#");
               for(var i=0; i<valueArray.length;i++){
               	if($(this).val() == valueArray[i])
                		$(this).attr("checked","checked");
              	 }
            }
            else{
           	 $(this).val(value);
            }
    	}
  	 });
}

/**
 * 表单回显,注意:要求页面span或td等组件的ID和json的key值必须对应,推荐使用数据库字段名
 * @param id 回显页父级组件ID,如table的id
 * @param json 结果集
 */
function initPageHTML(id,json){
	var data = $("#"+id+" *[id]");
	data.each(function() { 
		var value = json[$(this).attr("id")];
    	if(value != null){
    		$(this).html(value);
    	}
	});
}
  相关解决方案