【问题标题】:Call a Function After MVC's Remote ValidationMVC 远程验证后调用函数
【发布时间】:2015-10-08 14:41:55
【问题描述】:

我想在 MVC 的远程验证返回 true 后调用一个函数。但看起来我需要另一个事件来调用该函数。我试图在同一个 datepicker 元素上调用 onchange,但它们没有按正确的顺序调用。我想先调用验证,然后再调用 myFunction。

附:我也经历了 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" } })

【问题讨论】:

  • 也许更容易删除 [Remote] 属性并处理输入 .blur() 事件并进行自己的 ajax 调用(调用一种方法返回您需要的所有内容 - 即 isValid 值和 data.NewValue或在第一种方法成功时调用第二种方法)。您只需要更新自己的错误消息。
  • 这似乎是唯一可行的选择。必须尝试并使其发挥作用。

标签: javascript jquery asp.net-mvc validation


【解决方案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。还有田!完成!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-09-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-02
    • 2011-12-25
    • 2011-01-28
    相关资源
    最近更新 更多