【发布时间】:2010-05-17 10:19:07
【问题描述】:
我有一个带有 asp:RegularExpressionValidator 的 asp:TextBox 来验证它是否是一个数字。显然,在渲染时会在这个文本框上附加一个 onchange 事件。我还在 $(document) 处添加了一个更改事件。准备在值更改时进行一些计算。
<asp:TextBox id="myText" runat="server" />
<asp:regularexpressionvalidator id="myRev" ControlToValidate="myText" runat="server">*</asp:regularexpressionvalidator>
$(document).ready(function(){
$('[id$=myText]').bind('change',function(){
//do something
}).change(); //force the change event at the very beginning
});
由于注册时间,我的函数将在.net生成的js之后执行。但是asp.net js 会报错。我在js中追踪:
function ValidatorOnChange(event) {
...
}
发现 event.fromElement,event.toElement,event.srcElement 都是 null 导致异常。我做错什么了吗?有什么解决办法吗?谢谢。
编辑
已证明是一个 MS 错误,在 ASP.NET 4 vs2010 中运行良好。
【问题讨论】:
-
您需要运行 .net 处理程序,还是只需要 jQuery 处理程序?
-
@Nick Craver:$(XXX).change() 将触发其所有更改事件。但是为什么生成的js会报错呢?我认为应该正确触发它。
-
用
$('[id$=myText]')代替$('#myText') -
错误可能是因为 jQuery 在模拟事件时没有设置全局
event对象。 (猜测。) -
@Pointy - 它是 asp.net,*#$%ed 生成时的 ID,至少在 4.0 之前。 @Danny - 我知道
.change()是如何工作的,我在问你是否需要/想要运行 .Net 事件处理程序:)
标签: c# javascript jquery asp.net