Javascript 范围验证器问题

Javascript 范围验证器问题,javascript,asp.net,Javascript,Asp.net,我有一个GridView,其中一个字段中有一个文本框。我使用范围验证器确保用户只输入“x”字符: <asp:TextBox ID="txtMP3Master" runat="server" Text='<%# Eval("MP3Master") %>' BorderStyle="None" Width="80%" MaxLength="1" onchange="JSSaveNTSChanges(this);"></asp:TextBox> <asp:

我有一个GridView,其中一个字段中有一个文本框。我使用范围验证器确保用户只输入“x”字符:

<asp:TextBox ID="txtMP3Master" runat="server" Text='<%# Eval("MP3Master") %>' BorderStyle="None" Width="80%" MaxLength="1" onchange="JSSaveNTSChanges(this);"></asp:TextBox>  
<asp:RangeValidator ID="MP3MasterRangeValidator" runat="server" ControlToValidate="txtMP3Master" Display="Dynamic" ErrorMessage="MP3 Master can be nothing but 'x'" Text="*" MinimumValue="x" MaximumValue="x" ValidationGroup="InsertUpdateNewTitlesStatusValidation">
</asp:RangeValidator>

验证器在无效输入上显示“*”,但仍然调用JSSaveNTSChanges()。我希望此函数调用在无效输入时被阻止。顺便说一句,CompareValidator在其他字段中正常工作,并阻止调用相应的函数。 有可能解决这个问题吗?
谢谢。

我不确定您的函数JSSaveNTSChanges是在验证程序验证之前还是之后调用的。但我推荐以下两个选项之一:

  • 在提交按钮中移动JSSaveNTSChanges并单击
  • 使用EnableClientValidation=true在自定义验证器中调用此函数

  • 您应该使用
    CompareValidator
    而不是
    RangeValidator

    以下是我在这方面所做的测试。试试看

    <asp:CompareValidator ID="CompareValidator1" runat="server" ErrorMessage="CompareValidator"
            ValueToCompare="x"  ControlToValidate="txtMP3Master"></asp:CompareValidator>
    
    
    
    谢谢您的回答。我不能使用submit按钮,我甚至没有任何按钮。在其他字段中工作的CompareValidator正在检查数据类型,而不是值。