我工作在一个小提琴表明我想为我的用户ID字段做简单的验证:
- 让它要求(尽最大可能地验证)
- 设定的最小长度(验证尽最大可能地)
- 设置最大长度(验证尽最大可能地)
- 运行一个AJAX调用,以确保用户ID不存在( 我想只运行此上模糊 )
我不使用的validate() - 远程规则,因为我想有一个自定义对象返回只是一个简单的字符串,而不是。 如果可能的话用远程,它只是呼吁模糊的规则,然后我可以尝试为。 (我所有的AJAX响应遵守一套对象定义。)
HTML
<form action="#" method="get" id="register-wizard">User ID:
<br />
<input type="text" class="form-control required confirm-me" id="User_UserId" name="User.UserId" autocomplete="off" />
<div class="loader user-id hide" style="display: none;"><i class="icon-spinner icon-spin icon-large"></i> (Checking...)</div>
<p>
<button id="next">Next</button>
</p>
</form>
JavaScript的
var $wizardForm = $("#register-wizard");
var $validator = $wizardForm.validate({
rules: {
"User.UserId": {
required: true,
minlength: 3,
maxlength: 125,
userIdCheck: true
}
}
});
$("#next").click(function (e) {
e.preventDefault();
//do validations before moving onto the next tab in the wizard
var $valid = $wizardForm.valid();
if (!$valid) {
$validator.focusInvalid();
return false;
}
});
jQuery.validator.addMethod("userIdCheck", function (value, element) {
var validator = this;
this.startRequest(element);
var $loader = $(".loader.user-id");
$.ajax({
url: "/echo/json/",
type: "POST",
data:{
json: JSON.stringify({
text: 'some text'
}),
delay: 1
},
success: function (result) {
console.log("result: ")
console.log(result);
validator.stopRequest(element, true);
},
error: function (jqXHR, textStatus, errorThrown) {
alert("A server error occurred.\n\n" + textStatus);
},
beforeSend: function () {
$loader.show();
},
complete: function () {
$loader.hide();
}
});
return "pending";
}, "The user ID is already in use");
这里是我的小提琴: http://jsfiddle.net/eHu35/3/