有些时候需要动态添加行,又需验证,比较老实的做法是遍历的时候一个一个验证比如
function validateForm(){
var flag=true;
var k = 1;
var n = 1;
var errorStr="";
//验证单据类型不能为空
jQuery("#actualTransactionId").find("[name=documenTypeCode]").each(function (){
this.value=jQuery.trim(this.value);
var valueArr = ["1","2","3" ];
var trInt = k-1;
for(var i=0;i<valueArr.length;i++){
if(valueArr[i]==this.value){
errorStr = '第'+k+'行,'
var trInt = k-1;
var preDocumentType = jQuery("#preDocumentType"+trInt).val();
if(preDocumentType==""){
showOperateMessage(errorStr+'不能为空!',0,"div","showOperateMessage","error");
flag = false;
return flag;
}
}
k++;
}
});
if(!flag) return flag;
return flag;
}
其实还可以直接根据id去添加验证:
jQuery("#id").rules("add", { required: true, messages: { required: "不能为空"} });
jQuery("#id").rules("add",{
required:true,
messages: {
required: '必填'
}
});
切记,添加验证要在验证调用之前。
去掉验证也是如此:
$(“#id”).rules(“remove”,”required”);
我发现jQuery("#id").rules("add", { required: true, messages: { required: "不能为空"} });这种方式容易串,就是我动态生成了很多行,id仅以最后一个数字区分例如userId0、userId1、...这时候我只加第二行的,即userId1,代码如下:
var trInt = 行号-1;
jQuery("#usrId"+trInt).rules("add", { required: true, messages: { required: "不能为空"} });
可是最后效果却是userId那一列都加上了。
暂时没想到什么好的办法,只能如下处理:
var userId = $("#userId"+trInt).val();
if(userid==""){
jQuery("#userId"+trInt).attr("class","error").attr("title","不能为空");
flag = false;
}
然后再在调用的地方根据flag的值来判断是停下还是继续提交数据。