web-dev-qa-db-ja.com

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ではエラーがスローされ、[OK]をクリックしてフォームをポストした(trueを返す)ため、同じことは起こりません。

どうすればこれを回避できますか? event.preventDefault()を使用してこれを回避することを考えていましたが、このメソッドを使用してこれを行う方法がわかりません。 checkme(event)..を渡そうとしましたが、うまくいきませんでした。 Prototype jsを使用しています。

(JQueryを使用してhtml ..内でonclickを呼び出す代わりに、javascriptの.click関数をバインドするときにイベントを渡す方法を知っていますが、このコードをデバッグする必要があります)

56
TigerTiger

Onclick jsに 'return'を使用させて、目的の戻り値が使用されるようにしてください...

<button type="button" value="click me" onclick="return check_me();" />
20
Paul Dixon
  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>
171
toto_tico