【问题标题】:MVC 5 Losing validatorMVC 5 失败的验证者
【发布时间】:2016-03-07 13:03:41
【问题描述】:

我注意到 MVC 5 (C#) 中带有表单验证器的奇怪行为。 这是我检查 keyup 错误的代码:

    var $validatr = $('form').data('validator');
    var settngs = $validatr.settings;

    settngs.onkeyup = function (element, eventType) {
        if (!$validatr.element(element)) {
            $(this.currentForm).triggerHandler("invalid-form", [this]);
        }
    };
    settngs.onfocusout = false;

我注意到此代码适用于某些表单,而在其他表单上则不行。我也尝试这样获取验证器:

var $validatr = $('form').validate();

但它仍然无法正常工作。 重要提示: 然后我注意到该代码仅在用户尚未登录时才适用于注册表单。 (当用户登录时,我也可以访问注册表)。当用户登录时,我收到此错误:

TypeError: $validatr is undefined

在这种情况下,只有当元素存在 out_of_focus 时才会弹出输入表单的错误。

更新

如果我删除此 cookie:AspNet.ApplicationCookie 并刷新用户已注销的页面并且 onKeyUp 验证正在运行。怎么回事?

【问题讨论】:

  • 1.确保您正在加载所需的 JS 文件。 2.确保你在DOM中有form元素
  • 是的,所有 JS 文件都已加载,并且表单在 DOM 中。

标签: c# asp.net-mvc validation


【解决方案1】:

如果页面上有多个表单,或者页面上有包含表单的弹出窗口,则 Jquery 选择器可以按照您使用选择器的方式定位多个表单。我建议您改为按 Id 定位表单

var $validatr = $('#myForm1').data('validator');

或者使用循环来定位所有表单元素

 $('form').each(function( index, form ) {
    var settngs = form.settings;

    settngs.onkeyup = function (element, eventType) {
        if (!form.element(element)) {
            form.triggerHandler("invalid-form", [this]);
        }
    };
    settngs.onfocusout = false;
});

【讨论】:

  • 我必须选择表格。当用户登录时,在标题中创建了一个附加表单作为指向 user_management 的链接。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-11-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多