如何在Javascript中将事件对象传递给函数? 函数检查{ //event.preventDefault(); var hello=document.myForm.username.value; var err=''; 如果(hello=''| | hello==null){ err='需要用户名'; } 如果(错误!=''){ 警惕(err); $('username').focus(); 返回false; }否则{ 返回true;} }

如何在Javascript中将事件对象传递给函数? 函数检查{ //event.preventDefault(); var hello=document.myForm.username.value; var err=''; 如果(hello=''| | hello==null){ err='需要用户名'; } 如果(错误!=''){ 警惕(err); $('username').focus(); 返回false; }否则{ 返回true;} },javascript,dom-events,Javascript,Dom Events,在Firefox中,当我尝试提交一个空值时,它抛出错误并将焦点设置回元素。但在IE中不会发生同样的事情,因为它抛出错误,然后单击OK并发布表单(返回true) 我怎样才能避免这种情况?我想使用event.preventDefault()来避免这种情况,但我不确定如何使用这种方法。我尝试传递检查我(事件)。。但它不起作用。我正在使用Prototype js (我知道如何在绑定Javascript中的.click函数时传递事件..而不是在html中调用onclick。.使用Jquery,但我必须调试

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

我怎样才能避免这种情况?我想使用
event.preventDefault()
来避免这种情况,但我不确定如何使用这种方法。我尝试传递
检查我(事件)
。。但它不起作用。我正在使用Prototype js

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

虽然这是公认的答案,但托托蒂科下面的答案更好:)

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

<button type="button" value="click me" onclick="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(); 
     return false; 
   } else { 
    return true; }
}

  • 将函数check_me的定义修改为:

    <button type="button" value="click me" onclick="return check_me();" />
    
  • 现在,您可以访问事件的方法和参数,在您的情况下:

     function check_me(ev) {
    
  • 然后,必须在内联调用中的onclick上传递参数::

     ev.preventDefault();
    
    B.隔离Javascript: 上述两种解决方案都适用于小型项目,或者是一种黑客式的快速肮脏的解决方案,但对于大型项目,最好将HTML与Javascript分开

    只需将这两个文件放在同一文件夹中:

    • example.html:

    我会将您的绑定更改为:

    function check_me(ev) {
        ev.preventDefault();
        alert("Hello World!")
    }
    document.getElementById("my_button").addEventListener("click", check_me);
    

    不完全是我想要的。。但我会把它标记为已回答。谢谢。内联javascript现在非常不受欢迎!嗯,它已经10年了。另一个更好的答案是,我会引导人们去那里……你不能仅仅假设“事件”是定义好的。您的代码给出了以下运行时错误:“ReferenceError:未定义事件”。示例代码:函数awesome(){console.info(event);}awesome()@HOLDOFFINGER假定在内联事件发生时调用此函数。为什么要直接在事件之外调用它。我很想知道如果使用addEventListener会是什么样子?例如,它会像这样吗?ButtoneElement.addEventListener(“单击”,检查我(事件))。@CodeNovel with
    。addEventListener(“单击”,检查我)事件自动作为第一个参数传递。因此,如果您像
    check_me(e){…}
    这样定义函数,那么您可以在函数中使用事件
    e
    ,而不会出现问题。有时人们会这样构造它,但这不是必需的
    这个问题,@toto_tico的回答集中在我们所谓的“内联事件”上,事件处理程序被定义为一个字符串,该字符串被解析并计算为一个函数调用(或其他有效的JavaScript)。您可以只写一行,比如
    单击
    ,这一行将被执行。您还可以定义两个函数,如
    。。。onclick=“check_me(event);other_func(event);”..
    如果您真的愿意,这两个选项都将执行。除了关键字
    事件
    ,您还可以传递
    ,它是对调用元素的引用。
    <!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>
    
    <!DOCTYPE html>
    <html lang="en">
      <head>
      </head>
      <body>
        <button id='my_button' type="button">Click Me!</button>
    
        <!-- put the javascript at the end to guarantee that the DOM is ready to use-->
        <script type="text/javascript">
          function check_me(ev) {
            ev.preventDefault();
            alert("Hello World!")
          }
          
          <!-- add the event to the button identified #my_button -->
          document.getElementById("my_button").addEventListener("click", check_me);
        </script>
      </body>
    </html>
    
    <!DOCTYPE html>
    <html lang="en">
      <head>
      </head>
      <body>
        <button id='my_button' type="button">Click Me!</button>
    
        <!-- put the javascript at the end to guarantee that the DOM is ready to use-->
        <script type="text/javascript" src="example.js"></script>
      </body>
    </html>
    
    function check_me(ev) {
        ev.preventDefault();
        alert("Hello World!")
    }
    document.getElementById("my_button").addEventListener("click", check_me);
    
    <button type="button" value="click me" onclick="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; }
    }