2

getterを介してこのイベントを取得することにより、別のJavascript関数からJavascriptイベントを呼び出す方法は?

いくつかのサンプルコードを以下に示します。

<script type="text/javascript">
    function keyDownHandler(elem, e)
    {
       var keyId = e.keyCode;
       if(keyId === 13)
       {
          var clickMethod = elem.onclick;
          //now call the clickHandler method.
       }
    }
    </script>
    
    
    <input type="text" onkeydown="keyDownHandler(this, event)"
           onclick="clickHandler(this)" />

onclick入力フィールドの属性で定義されたメソッドを呼び出したい。

4

4 に答える 4

4

Tim S.が言ったように、ハンドラーを直接呼び出すことができますが、本当にイベントを呼び出したい場合は、Jqueryの「トリガー」を使用できます。

$(elem).trigger('click')

elemがjqueryオブジェクトでない場合。

編集:jqueryは必要ありません。コードは、onclick呼び出しに括弧を追加するだけで機能するはずです。

function keyDownHandler(elem, e) {
            var keyId = e.keyCode;
            if (keyId === 13) {
                elem.onclick();
            }
        }

clickHandlerを定義する必要があります。

于 2013-01-22T11:57:57.397 に答える
1

私はそれをお勧めしません。

ハンドラーから共有ログインを別のメソッドとして抽象化してonclickから、両方のイベントハンドラーからメソッドを呼び出す必要があります。

function sharedloginc(some arguments...) {
    //do something
}

function keyDownHandler(el, e) {
    //do something
    sharedloginc(....)   
}

function clickHandler(el, e){
    sharedloginc(....)
}
于 2013-01-22T11:56:47.033 に答える
0

使ってみませんか

<script type="text/javascript">
function keyDownHandler(elem, e)
{
    var keyId = e.keyCode;

    if(keyId === 13)
    {
        // call function, normally
        clickHandler(elem, null);
    }
}
</script>

(正しい!)イベントオブジェクトを生成できないため、event引数を設定しました。null


さて、いくつか遊んだ後、私はこれを作ることができました:

<script type="text/javascript">
function keydown_handler(el, e) {
    var click, code = e.keyCode;

    if(code === 13) {
        var handler = el.onclick;

        if(typeof handler === 'function') {
            handler.apply(this, el, null);
        }
    }
}

function click_handler(el, e) {
    alert('clicked!');
}
</script>

<input type="text" onkeydown="keydown_handler(this, event);" onclick="click_handler(this, event);" />

動作しているようですが、現時点ではすべてのブラウザで動作することを確認できません。

于 2013-01-22T11:53:59.387 に答える
0

この例はあなたの問題を解決します。

<html>
<head>
<title>Testing</title>
</head>
<body>
             <script type="text/javascript">
                 function keyDownHandler(elem, e)
                   {
                       var keyId = e.keyCode;
                       if(keyId == 13)
                       {
                         // var clickMethod = elem.onclick;
                          clickHandler(elem, e);
                        }
                   }
                  function clickHandler(elem, e)
                  {
                    alert("clickHandler");
                  }
           </script>
       <input type="text" onkeydown="keyDownHandler(this, event)" onclick="clickHandler(this, event)" />
</body>
</html>
于 2013-01-22T11:57:59.933 に答える