2017-08-25 37 views
1

我已閱讀關於RegularExpressionValidator其他問題的其他答案,但他們沒有幫助。我正在研究ASP.NET C#應用程序,並且我有一個文本字段,需要是1或2位數字。這裏的控制:在asp.net RegularExpressionValidator不工作1或2位數

<asp:TextBox 
    ID="Hunt_Daily_Sitting_hrs" 
    runat="server" 
    class="form-control" 
    placeholder="hours" 
    type="number"></asp:TextBox> 

正如書面,即使它指定type =「number」,它允許數學運算符。所以人們一直在「6-8小時」進入「6-8」。在this頁面上,正則表達式^ \ d {1,2} $標記這樣一個條目。然而,在我的應用程序中,行

<asp:RegularExpressionValidator 
    ID="HuntSitRegexp" 
    Display="Dynamic" 
    ControlToValidate="Hunt_Daily_Sitting_hrs" 
    ValidationExpression="^\d{1,2}$" 
    runat="server" 
    ErrorMessage="Please enter a number from 1-24" 
    Font-Size="Large" 
    ForeColor="Red" /> 

沒有。立即標記3位數字,但不立即標記諸如「6-8」的條目。然而,諸如「6-8」之類的條目不能提交,因爲「提交」按鈕什麼都不做,表明Javascript驗證失敗。所以用戶留下了一個想法:「表單有什麼問題?它不會提交,但沒有錯誤信息。」

+1

爲什麼不使用下拉數字1-24而不是文本框? – juharr

+0

聽起來像你需要修復你的網頁,以便它顯示驗證錯誤消息。 –

+0

它確實顯示驗證器錯誤消息。例如,它顯示三位數字的錯誤消息。它只是不顯示一個或兩個數字和一個數學運算符。 –

回答

1

ValidationExpression="^\d{1,2}$"是好的,但正則表達式檢查是不是number類型的輸入啓用。

因此,您需要將asp:TextBox控件type="number"更改爲type="text"

0

試試這個註冊防爆代替

^[0-9]{1,2}$ 
+0

我試着與上述相同的結果。 –

0

我認爲改變類型的答案是正確的。 但是,我注意到您的 ValidationExpression =「^ \ d {1,2} $」
和 ErrorMessage =「請輸入1-24的數字」 不匹配。它將需要任何1-2位數字。

正則表達式表達將匹配只有數字1-24是以下:^(\ d)$ | ^(1 \ d)$ | ^(2 [0-4])$

相關問題