2016-03-07 62 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