我面临的问题是:
我希望能够将事件作为属性添加到文本框中,例如:
txtCreateDate.Attributes.Add("onchange", string.Format("JSfunction({0},'{1}');", arg1, arg2));
更多信息: 日期输入到c#的文本框中。日历控件在页面上有一个事件处理程序。选择日期后,事件处理程序会将日期放入文本框中。我已经尝试将焦点设置到文本框,然后在文本框上放置一个onBlur属性,但文本框似乎永远不会得到焦点。
我想我可以直接调用javascript函数来执行ClientScript.RegisterClientScriptBlock或类似的东西,但这看起来很草率,从来没有像我想要的那样工作。
答案 0 :(得分: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
}
答案 1 :(得分:8)
你错误解释了onchange事件在应用于textarea时的作用。直到它失去焦点或你进入后它才会开火。为什么不从填充文本区域的选择中的onchange上激活函数?
点击此处查看有关onchange事件的更多信息:w3schools
答案 2 :(得分:8)
您只需使用
即可启动活动document.getElementById("elementID").onchange();
我不知道这在某些浏览器上是否起作用,但它应该适用于FF 3和IE 7 +
答案 3 :(得分:2)
Onchange
仅在用户通过键盘输入内容时触发。 可能 workarround可以是首先聚焦文本字段然后更改它。
但是,为什么不在用户点击日期时获取事件?已经有一些javascript。
答案 4 :(得分:1)
你的人口来自服务器端。使用registerclientscript会将脚本放在表单的开头..你会想要使用RegisterStartupScript(Block)将脚本放在相关页面的末尾。
前者尝试在dom中存在文本区域之前运行脚本,后者将在创建页面中的元素之后运行脚本。
答案 5 :(得分:1)
您可以尝试the Anthem library。
答案 6 :(得分:0)
您可以将其放在不同的类中,然后调用函数。这适用于ajax refresh
$(document).on("change", ".inputQty", function(e) {
//Call a function(input,input);
});
答案 7 :(得分:-4)
只有在以编程方式更改属性或用户进行更改然后将焦点远离字段时,才会触发“onchange”。
您是否看过使用YUI的日历对象?我编写了一个解决方案,将yui日历放在yui面板中并隐藏面板,直到单击关联的图像。我能够看到其中任何一个的变化。
http://developer.yahoo.com/yui/examples/calendar/formtxt.html