function checkName() { var deferred = $.Deferred();//延遲方法 var Name = $("#name").val(); var Names = $("#names").val(); var Pid = $("#pNodeId").val(); var nodeId = $("#nodeId").val(); $.ajax({ type:"post", url:"../Category/verifyName", async:false, data:{ Name:$("#name").val(), Pid:$("#pNodeId").val(), nodeId: $("#nodeId").val() }, dataType: "html", success: function(data, type) { if(data=="ok"){ deferred.resolve(); }else{ deferred.reject(); } } }); //deferred.state()有3個狀態:pending:還未結束,rejected:失敗,resolved:成功 return deferred.state() == "resolved" ? true : false; }
remote通過addMethod方式實現:
jQuery.validator.addMethod("valCheckName", function(value, element) { return checkName(); },'名稱已存在');
jquey.validate 中調用
//表單校驗 $('#form').validate({ submitHandler:function(form){ if(checkName()){//提交前再次驗證是否重名 form.submit(); } }, rules : { name : { required : true, byteRangeLength : [2, 32], valCheckName:true }, note : {byteRangeLength : [3, 200]} } });