通过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属性中定义的方法
答案 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>