如何将事件对象传递给Javascript中的函数?

function check_me() { //event.preventDefault(); var hello = document.myForm.username.value; var err = ''; if(hello == '' || hello == null) { err = 'User name required'; } if(err != '') { alert(err); $('username').focus(); return false; } else { return true; } } 

在Firefox中,当我尝试提交一个空值时,抛出错误并将焦点设置回元素。 但同样的事情不会发生在IE浏览器,因为它会引发错误,并在单击确定后发布表单(返回true)。

我怎样才能避免这一点? 我想避免使用event.preventDefault(),但我不知道如何使用这种方法做到这一点。 我尝试通过检查(事件)..但它没有工作。 我正在使用Prototype js。

(我知道如何传递一个事件,当我绑定JavaScript中的.click函数..而不是调用HTML内的..使用Jquery,但我必须debugging这段代码)

尝试使onclick js使用“返回”,以确保所需的返回值被使用…

 <button type="button" value="click me" onclick="return check_me();" /> 
  1. 将函数check_me的定义修改为::

     function check_me(ev) { 
  2. 现在你可以访问事件的方法和参数了::

     ev.preventDefault(); 
  3. 然后,你必须在内联调用onclick上传递参数::

     <button type="button" onclick="check_me(event);">Click Me!</button> 

一个有用的链接来理解这一点。


完整的例子:

 <!DOCTYPE html> <html lang="en"> <head> <script type="text/javascript"> function check_me(ev) { ev.preventDefault(); alert("Hello World!") } </script> </head> <body> <button type="button" onclick="check_me(event);">Click Me!</button> </body> </html> 

我会改变你的绑定是:

 <button type="button" value="click me" onclick="check_me" /> 

然后我会改变你的check_me()函数声明为:

 function check_me() { //event.preventDefault(); var hello = document.myForm.username.value; var err = ''; if(hello == '' || hello == null) { err = 'User name required'; } if(err != '') { alert(err); $('username').focus(); event.preventDefault(); } else { return true; } }