我想使用自己的函数来验证文本框的值。这是因为格式类似于'MMM YYYY'(例如:2014年12月)。
我正在使用AjaxControlToolkit。 我看到maskededitvalidator为我提供了ClientValidatonFunction属性,例如CustomValidator。
问题是似乎永远不会调用此函数。
这是我的小JavaScript函数:
<script type="text/javascript">
function MyFunction(sender, args) {
alert("foo");
}
</script>
这是我的ASP
<asp:textbox id="StartTextBox" cssclass="textbox"
style="width: 60px;" validationgroup="Dialog"
causesvalidation="false" runat="server">
</asp:textbox>
<ajaxtoolkit:calendarextender id="StartCalendarExtender"
targetcontrolid="StartTextBox" format="MMM yyyy"
OnClientHidden="onCalendarHidden_StartTextBox"
OnClientShown="onCalendarShown_StartTextBox"
BehaviorID="calendar_StartTextBox" runat="server">
</ajaxtoolkit:calendarextender>
<ajaxtoolkit:maskededitextender id="StartMaskedEditExtender"
targetcontrolid="StartTextBox" enabled="false"
mask="??? 9999" masktype="Date" oninvalidcssclass="textbox_invalid"
runat="server">
</ajaxtoolkit:maskededitextender>
<ajaxtoolkit:maskededitvalidator id="StartMaskedEditValidator"
controlextender="StartMaskedEditExtender" display="Dynamic"
controltovalidate="StartTextBox"
clientvalidationfunction="MyClientFunction" enableclientscript="true"
enabled="true" isvalidempty="false" runat="server">
</ajaxtoolkit:maskededitvalidator>
我的警报永远不会发生。
问题是我做错了什么或者我要改变什么来调用clientvalidation函数?
卓越学科领域
答案 0 :(得分:0)
我怀疑如果在客户端切换调试器,可能会出现javascript错误。我还怀疑你正在使用&#34;发布&#34;中的脚本。模式,因此缩小。你可能想检查一下。要确认,请编写脚本&#34; debug&#34;模式(在ScriptManager中将ScriptMode切换为Debug),希望它能正常工作。
至少自2011年以来,这是一个已知的错误,截至2013年12月发布时,仍未在Ajax Toolkit中修复。
错误报告: http://ajaxcontroltoolkit.codeplex.com/workitem/26740
这是因为调试模式/完整/非缩小版本说明了这一点:
var args = { Value:mask, IsValid:true };
eval(value.ClientValidationFunction + "(value, args);");
但是发布模式/缩小版本说的是这样的:
var s = { Value:mask, IsValid:true };
eval(n.ClientValidationFunction + "(value, args);");
如你所见,&#34;价值&#34;和&#34; args&#34; eval语句中的字符串内部没有被触及,但是已经分别在其他地方被改为n和s(值似乎总是被缩小为n,但是,args似乎被缩小为c,e,s和v在5中此文件中出现此eval)。
有各种解决方法,没有一个非常好。请参阅上面的链接,但基本上是: