Che*_*hen 2 javascript c# asp.net jquery
我有一个asp:带有asp:TextExpressionValidator的TextBox来验证它是否是一个数字.显然,onchange事件将在渲染时附加到此文本框.我还在$(document).ready中添加了一个更改事件,以便在更改值时进行一些计算.
<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
});
Run Code Online (Sandbox Code Playgroud)
由于寄存器时间的原因,我的函数将比.net生成的js执行得晚.但是asp.net js会抛出一个错误.我在js中追踪:
function ValidatorOnChange(event) {
...
}
Run Code Online (Sandbox Code Playgroud)
并发现event.fromElement,event.toElement,event.srcElement的所有内容都为null,从而导致异常.我做错什么了吗?有解决方案吗 谢谢.
编辑
它被证明是一个MS bug,在ASP.NET 4 vs2010中运行良好.
包括Pointy关于ID的观点(我自我解决),你可以像这样重写它:
$(function(){
$('#<%=myText.ClientID%>').change(function() {
//stuff
}).triggerHandler('change');
});
Run Code Online (Sandbox Code Playgroud)
如果没有看到你的其他事件是如何附加的,那.triggerHandler()将是我最好的建议,因为事件不会被.Net处理程序捕获.