2011-07-13 166 views
0

我有一個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在其他字段中正常工作,並阻止相應的函數被調用。 可以解決這個問題嗎? 謝謝。

回答

0

您應該使用CompareValidator而不是RangeValidator

這是我在我的測試結束。試試吧..

<asp:CompareValidator ID="CompareValidator1" runat="server" ErrorMessage="CompareValidator" 
     ValueToCompare="x" ControlToValidate="txtMP3Master"></asp:CompareValidator> 
+0

謝謝。我不知道爲什麼,但是這沒有奏效,要麼... – dpreznik

+0

在其他字段中工作的CompareValidators正在檢查數據類型,而不是數值。 – dpreznik

+0

雖然它現在還在工作,我會責備我的艱難運氣...... – dpreznik

0

我不確定您的函數JSSaveNTSChanges將在驗證器驗證之前或之後被調用。但我推薦以下兩個選項之一:

  1. 移動JSSaveNTSChanges在提交按鈕單擊。
  2. 調用此函數與EnableClientValidation =自定義驗證真實
+0

謝謝你的回答。我無法使用提交按鈕,甚至沒有任何提交按鈕。 – dpreznik

+0

我不確定第二個選項應該如何工作。 – dpreznik