通过以编程方式更改文本框值来调用Javascript onchange事件

mat*_*360 11 javascript textbox onchange

我面临的问题是:

  • 我有一个日历控件旁边的日期范围的文本框.
  • 当用户从日历中选择日期时,它会将该日期填入文本框
  • 当发生这种情况时,我想启动一个javascript函数,但是,"onchange"事件似乎不会发生.

理想情况下,我希望能够将事件作为属性添加到文本框中,例如:

txtCreateDate.Attributes.Add("onchange", string.Format("JSfunction({0},'{1}');", arg1, arg2));
Run Code Online (Sandbox Code Playgroud)

更多信息:日期输入到c#的文本框中.日历控件在页面上有一个事件处理程序.选择日期后,事件处理程序会将日期放入文本框中.我已经尝试将焦点设置到文本框,然后在文本框上放置一个onBlur属性,但文本框似乎永远不会得到焦点.

我想我此时可以直接调用javascript函数做ClientScript.RegisterClientScriptBlock或类似的东西,但这看起来很草率,从来没有像我想要的那样工作.

pal*_*wim 19

这是一个老问题,我不确定它是否会有所帮助,但我已经能够使用以下命令以编程方式触发事件:

if (document.createEvent && ctrl.dispatchEvent) {
    var evt = document.createEvent("HTMLEvents");
    evt.initEvent("change", true, true);
    ctrl.dispatchEvent(evt); // for DOM-compliant browsers
} else if (ctrl.fireEvent) {
    ctrl.fireEvent("onchange"); // for IE
}
Run Code Online (Sandbox Code Playgroud)


jac*_*gel 8

您在应用于textarea时误解了onchange事件的作用.直到它失去焦点或你进入后它才会开火.为什么不从填充文本区域的选择的onchange中激活函数?

有关onchange事件的更多信息,请点击此处:w3schools


Sve*_*nke 8

您只需使用即可触发事件

document.getElementById("elementID").onchange();

我不知道这在某些浏览器上是否起作用,但它应该适用于FF 3和IE 7+