2009-08-14 201 views
37

如何将事件对象传递给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中。点击函数传递事件..而不是使用jQuery调用的onclick中的HTML ..,但我有调试这段代码)

回答

20

尝试制作的onclick JS使用“回归”,以确保所需的返回值被使用......

<button type="button" value="click me" onclick="return check_me();" /> 
+0

不完全是我正在寻找..但我会将其标记为已回答。谢谢。 – TigerTiger 2009-08-24 11:26:37

+0

这对我有效。谢谢! – apebeast 2016-01-21 23:20:18

127
  1. 修改功能check_me的定义::

    function check_me(ev) { 
    
  2. 现在,您可以访问事件::

    ev.preventDefault(); 
    
  3. 的方法和参数。然后,你必须通过参数上的onclick在内嵌调用::

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

A useful link了解这一点。


完整的示例:

<!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> 
+0

谢谢你toto_tico ..它肯定帮我节省了几个小时.. – 2016-05-16 14:49:41

-1

我会改变你的绑定是:

<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; } 
} 
+0

你不能只是假设“事件”被定义。你的代码给了我这个运行时错误:“ReferenceError:event is not defined”。示例代码:function awesome(){console.info(event); } awesome(); – HoldOffHunger 2017-11-03 15:21:11

相关问题