在MVC的远程验证后调用函数

时间:2015-10-08 14:41:56

标签: javascript jquery asp.net-mvc validation

我希望在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" } })

1 个答案:

答案 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 。和田田!完成!