2016-03-07 65 views
0

我注意到MVC 5(C#)一个奇怪的行为与表单验证。 这是我的代码检查KEYUP错误:MVC 5失去验证

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。

UPDATE

如果我删除这个cookie:AspNet.ApplicationCookie并刷新用户退出页面和验证的onkeyup工作。到底是怎么回事?

+0

1.确保你需要加载JS文件。 2.请确保您有'form'元素在DOM –

+0

是所有的JS文件的加载和形式是DOM。 – DJack

回答

2

如果你有一个页面上有多个表格,或者你有一个包含jQuery选择可以有多种形式有针对性您使用选择的方式在页面上形式的弹出窗口。我建议你通过标识目标的表单代替

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; 
}); 
+0

我不得不选择表格。当用户登录时,在标题中创建了一个额外的表单作为user_management的链接。 – DJack