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

时间:2009-08-14 09:17:22

标签: javascript javascript-events

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()避免这种情况,但我不知道如何使用此方法执行此操作。我尝试通过checkme(事件)..但它没有工作。我正在使用Prototype js。

(我知道如何在javascript中绑定.click函数时传递一个事件..而不是在html中调用onclick ...使用Jquery,但我必须调试这段代码)

3 个答案:

答案 0 :(得分:164)

  1. 将函数check_me的定义修改为::

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

    ev.preventDefault();
    
  3. 然后,您必须在内联调用::

    中的onclick上传递参数
    <button type="button" onclick="check_me(event);">Click Me!</button>
    
  4. 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>
    

答案 1 :(得分:19)

尝试使onclick js使用'return'以确保使用所需的返回值...

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

答案 2 :(得分:-3)

我会将你的绑定改为:

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