2012-01-10 55 views
5

我需要提交表單的內容時,我按輸入鍵,但只有當表單沒有錯誤信息時。我建立了以下功能:表單提交on keyCode ==「enter」(13)

$(targetFormID).submit(function (e) { 
    var mess = error_m(targetDiv); 
    if (e.keyCode == 13 && mess.length > 0) { 
     e.preventDefault(); 
     e.stopPropagation(); 
    } 
    if (mess.length == 0 && e.keyCode == 13) $(targetFormID).submit(); 
}); 

在此功能的混亂變量越來越按功能error_m返回的錯誤信息,剩下的就是簡單的代碼condtion,但它不工作。

需要一些幫助!

+3

「it does not work」>。< – 2012-01-10 12:38:46

+0

向我們展示error_m函數 – 2012-01-10 12:42:20

回答

7

輸入鍵被按下時提交表單是默認瀏覽器行爲。不要惹它。只需驗證submit事件中的表單即可。

$(targetFormID).submit(function (e) { 
    var mess = error_m(targetDiv); 
    if (mess.length > 0) { 
     e.preventDefault(); 
    } 
}); 

另一個可能的問題:什麼是targetFormID?如果它實際上是包含元素ID的字符串,你需要

$("#" + targetFormID).submit(/* Same function as above */); 

如果是到窗體元素的引用,然後$(targetFormID)是不錯,但你的變量命名的誤導性。

+0

如果頁面上有多個表單,則可能必須實現此類解決方案,特別是如果焦點通常不在某個表單元素上的「默認」形式(嗯,這是我記得4年前不得不做的事情)。 – JayC 2012-01-10 13:11:11