2016-03-29 142 views
0

我有一個帶有文本輸入和按鈕的窗體。爲什麼這個JavasScript驗證在Firefox中不起作用

有一點JavaScript來驗證用戶名是否爲空。如果它是空的,它將顯示一個驗證消息,否則將提交表單。

問題是onclick甚至不會在Firefox中觸發。它適用於所有其他瀏覽器。

有人可以指出我哪裏出錯了嗎?非常感謝。

HTML: <form name="myForm" action="TestController"> <input type="text" width="50" name="username" /> <button onclick="submitForm()">Go</button> <span class="errSpan"></span> </form>

的JavaScript:

(function(NAMESPACE){ 

NAMESPACE.submitForm = function(){ 
    console.log('invoked'); 
    window.event.preventDefault(); 
    console.log(window.myForm.username.value); 

    if(window.myForm.username.value === "") 
    document.getElementsByClassName('errSpan')[0].innerHTML = 'cannot be null'; 
    else { 
    document.myForm.submit(); 
    } 
} 
})(window); 

Here is link to JsFiddle

回答

0

在Firefox window.event是不確定的,而你的代碼失敗,出現錯誤。

使用addEventListener爲表單添加提交事件,並從按鈕中刪除onclick語句。

window.myForm.addEventListener('submit', function (e) { 
    e.preventDefault(); 
    //any code what you want 
}); 
0

首先,您應該將事件傳遞給submitForm()方法。

onclick="submitForm(event)" 

然後使用該事件參數調用preventDefault

NAMESPACE.submitForm = function(e){ 
    console.log('invoked'); 
    e.preventDefault(); 
    console.log(window.myForm.username.value); 
    ... 
} 

或者使用onsubmit方法來調用您的提交功能,並停止事件propogration即提交表單。