如何调用javascript事件函数

时间:2013-01-22 11:51:16

标签: javascript javascript-events

通过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 个答案:

答案 0 :(得分:2)

正如Tim S.所说,你可以直接调用handler,但是如果你真的想调用这个事件,你可以使用Jquery&#39;触发&#39;。

$(elem).trigger('click')

如果elem不是jquery对象。

编辑:不需要jquery。代码应该只需在onclick调用中添加括号即可。

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

必须定义clickHandler。

答案 1 :(得分: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);" />

它似乎有效,但我现在无法验证它是否适用于所有浏览器。

答案 2 :(得分:0)

我不推荐。

您需要将共享登录作为单独的方法从onclick处理程序中抽象出来,然后从两个事件处理程序中调用该方法。

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

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

function clickHandler(el, e){
    sharedloginc(....)
}

答案 3 :(得分: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>