你仍然非常含糊,在你的問題。但我認爲你想要的是調用ajax並進行服務器端驗證。如果是這樣,問題是,你的驗證將Ajax請求之前,因爲Ajax請求是異步返回..做這個
<html>
<head>
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
<script type="text/javascript" src="http://ajax.aspnetcdn.com/ajax/jquery.validate/1.9/jquery.validate.min.js"></script>
<script type="text/javascript" src="http://ajax.aspnetcdn.com/ajax/mvc/3.0/jquery.validate.unobtrusive.js"></script>
<script type="text/javascript">
jQuery.validator.addMethod("ajaxCustom", function (value, element) {
var wrap = $(element);
var url = wrap.data("customAjaxUrl");
var result;
$.ajax({
type: 'GET',
url: url,
dataType: 'json',
success: function (data) {
result = data.valid;
},
data: { value: value, id: element.id },
async: false
});
return this.optional(element) || result;
}, "Ajax");
$.validator.unobtrusive.adapters.addBool('ajaxCustom');
</script>
<style type="text/css">
.input-validation-error {
background: red;
}
</style>
</head>
<body>
<form action="/">
<input data-val-ajaxCustom="Tuckel" data-val="true" data-val-required="Its required" data-custom-ajax-url="validate.html" />
<button type="submit">Submit</button>
</form>
</body>
</html>
如果GeneralButtonFrm使用AJAX呈現,你必須使用jQuery.validator.unobtrusive.parse,或者是它使用ajax的自定義驗證器?使用ajax的驗證器有點棘手,你需要返回false它們是無效的,那麼當你從服務器得到答案時,如果該值有效,則需要設置一個標誌,然後重新驗證表單並根據標誌返回true或false。我希望我很清楚:D – Anders 2012-01-18 14:19:30
感謝您的快速回答。你是什麼意思與「無效時返回假」?以及如何/從哪裏可以得到服務器的答案? – 2012-01-18 16:12:06
只爲了讓一切順利,你有一個自定義的規則,試圖驗證使用AJAX? – Anders 2012-01-20 12:00:09