近期项目中遇到web某一页面,使用表格设置多行信息,每行属性柜子号码不可重复校验,由于重复校验很头疼,不能使用一般的js正则表达式匹配解决问题额,完全的依靠前台遍历性能很烂,一直困扰额。。。
由于信息设置使用的是form表单提交,控制器采用spring MVC框架,可以自动帮忙封装bean的map对应属性,于是乎,
$('#scForm').form('submit', {
}
}
});
if(flag){
$("#scTable select[name$='.status']").removeAttr("disabled");
}
return flag;
},
success:function(data){
data = $.parseJSON(data);
if (data.result == "success"){
$.messager.alert('提示', '保存成功!', 'info', function () {
window.parent.$('#lockerDetailWindow').window('close');
window.parent.$('#lockertable').datagrid('load');
});
}else{
$.messager.alert('提示', 保存失败!错误信息:'+data.errormsg, 'error');
}
}
});
当然还遗漏了一点就是:为属性添加change事件,一旦改变则将其name属性改变,才可保证使后台map封装时候相同的key覆盖,
$(".pros").change(function(){
var vals = $(this).val();
$(this).attr("name","preMap['key"+vals+"'].no");
var valsTr = $(this).parents("tr");
$(valsTr.find($("select"))[0]).attr("name","preMap['key"+ vals+ "'].code");
$(valsTr.find($("select"))[1]).attr("name","preMap['key"+ vals+ "'].status");
});
至此,可以巧妙地解决重复校验的问题。。