2016-03-29 76 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即提交表单。