通过javascript触发控件事件

时间:2010-09-21 08:14:38

标签: javascript

我试图找出如何从javascript函数触发控件的事件(不触及实际控件本身)

说我有这个文本框......

<input type="text" value="" id="my_textbox" onclick="alert('!');" />

然后说我试图通过javascript调用它的onclick事件......

function TriggerTextboxOnClick()
{
  //... call the onclick event of 'my_textbox'
}

P.S。我实际上并没有尝试弹出警报框,我为了插图而简化了它

3 个答案:

答案 0 :(得分:3)

您可以致电document.getElementById("my_text_box").onclick(),另请参阅:http://jsbin.com/ixuwo4

答案 1 :(得分:1)

Bouke的解决方案有效。

一般来说,你可能想做一些这样的事情,而不是一个好的做法:

<input id="my_textbox" onclick="my_textbox_onClick()" />
...
function commonLogic() {
  // Logic that's common to both the onclick event and the *other* code 
}

function my_textbox_onClick() {
  // This function should only contain logic that is triggered by a click on the textbox
  commonLogic();
}

答案 2 :(得分:1)

几件事:

  • 在你的例子中通过内联onclick属性进行某些操作并不是最好的方法。在脚本块中附加事件处理程序对于可访问性和更清晰,可维护的代码更好。
  • 如果您正在使用像jQuery这样的库,那么让库为您处理它。见下面的代码:

//assuming using jQuery

$('#my_textbox').click(function(){
    //do stuff here
});


//firing the event in some other function
function TriggerTextBoxOnClick(){
    //do stuff here

    $('#my_textbox').click();

}

参考:有关内联点击处理程序的更多信息:http://www.quirksmode.org/js/events_early.html

您可以使用普通的旧js执行与jQuery代码相同的操作:

element.onclick = doSomething;
if (element.captureEvents) element.captureEvents(Event.CLICK);

阅读本文以获取有关使用普通JS执行此操作的更多信息:http://www.quirksmode.org/js/introevents.html