我希望在MVC的远程验证返回 true 之后调用一个函数。但看起来我需要另一个事件来调用该函数。我试图在同一个 datepicker 元素上调用 onchange ,但是没有按正确的顺序调用它们。我想先调用验证,然后再调用 myFunction 。
P.S。我也经历了jquery.validate invalidHandler ,但似乎并没有解决问题。因为它还需要一些事件调用。
<span class="fgroup">
@Html.TextBoxFor(model => model.master.D1, new { @id = "datepicker" })
@Html.ValidationMessageFor(model => model.master.D1, "", new { @class = "text-danger" })
</span>
在远程验证返回 true 之后,我想调用我的函数:
function myFunction1() {
var datVal = $("#datepicker").val();
var url = "/TrM/AutoDocNoGen?date=" + datVal;
$.ajax({
data: datVal,
type: "GET",
url: url,
success: function (data) {
var formValid = $("#allSaveForm").validate().form();
if (!formValid) {
return false;
}
$(".vchrNoField").val(data.NewValue);
},
error: function () {
}
}); }
从Ajax调用返回后,我想更新此字段的值。首先调用验证非常重要,然后在下面的这个字段进行更新。
@Html.EditorFor(model => model.master.S1, new { htmlAttributes = new { @class = "text-input-grey vchrNoField" } })
答案 0 :(得分:1)
我已成功使用Jquery的 ajaxComplete 方法解决了该问题。在我解决之前,它给我带来了很多困扰。这就是我所做的。
$(document).ajaxComplete(function (event, xhr, settings) {
if (settings.url === "/Rules/datecheck" && xhr.responseJSON == true) {
var datVal = $("#datepicker").val();
var ur = "/TrM/AutoDocNoGen?date=" + datVal;
$.ajax({
data: datVal,
type: "GET",
url: ur,
success: function (data) {
$(".vchrNoField").val(da.NewValue);
},
error: function () {
}
});
}
});
所以基本上我已经在 ajaxComplete 上调用了我的ajax请求,并添加了一个if语句来检查远程验证的响应是否返回 true 。和田田!完成!