1
我試圖用jQuery validation remote method檢查一個值是唯一 的規則上提交,以防止它在每一次擊鍵jQuery驗證不等待遠程規則
var Id = $("#id").val();
$('#form').on('submit', function (e) {
e.preventDefault();
var newValue = $('#input').val();
$('#input').rules('add', {
'remote': {
url: '/MyController/CheckValue',
type: 'POST',
data: {
id: Id,
value: newValue
}
},
messages: {
'remote': 'This value is not valid'
}
});
if ($('#form').valid()) {
window.console.log('valid')
// do something
}
$('#input').rules('remove', 'remote');
});
的行動被解僱添加返回true假後服務
[HttpPost]
public JsonResult CheckValue(int? id, string value)
{
bool available;
using (var myServiceClient = new MyServiceClient())
{
available = myServiceClient.IsValueAvailable(id, value);
}
return this.Json(available);
}
規則的呼叫工作正常,但$('#form').valid()
返回true
每次因爲它沒有等待遠程規則來完成它的調用。
This post建議在遠程規則聲明中使用async: false
,但會凍結瀏覽器。 documentation中的示例沒有使用它,所以它應該沒有它。
我的驗證規則有問題嗎?
關閉...該方法被稱爲'.validate()'不''.validation()'。 – Sparky
@Sparky好的,趕上!回答編輯。 – dSquared
感謝您的回答,但我忘了提及我使用jQuery驗證與MVC不顯眼的驗證相結合,所以這一步已經完成了這個插件,並且不顯眼的驗證工作正常。 我只想將新規則添加到表單上的現有驗證,它適用於傳統規則,但不適用於遠程規則:表單在遠程驗證的結果之前進行驗證。 –