如何让我的文本框只允许1-14号?

时间:2014-03-10 14:30:53

标签: c# asp.net

这是我到目前为止所做的,但我显然遇到了错误。

try
{
    dblNights = Convert.ToDouble(txtNights.Text);

    if (dblNights > 1 && 14)
    {
    }
    else
    {
        string script = "alert(\"Number of Nights Must be between 1 and 14!\");";
        ScriptManager.RegisterStartupScript(this, GetType(), "ServerControlScript", script, true);
        txtNights.Focus();
    }
}//End Try

catch
{
    string script = "alert(\"Number of Nights Must be an Integer!\");";
    ScriptManager.RegisterStartupScript(this, GetType(), "ServerControlScript", script, true);

    txtNights.Focus();
}//End Catch

如果输入1-14之外的数字,我不太清楚如何显示错误框。其他一切都在起作用,就是这样。我做错了什么?

谢谢。

3 个答案:

答案 0 :(得分:6)

问题:您未正确使用Logical AND运算符。

此:

       if (dblNights > 1 && 14)
        {

        }

必须:

       if (dblNights >= 1 && dblNights <= 14)
        {
             /*valid range some thing here*/
        }

编辑:正如Eric Lippert在评论中所建议的那样,我想向您展示TryParse的使用情况。

如果您使用double.TryParse(),则可以消除无效数据可能出现的Exceptions。因为double.TryParse()方法会返回Booleantrue转换成功,否则返回false,以便您可以避免try catch阻止。

试试这个:

        double dblNights;
        if (double.TryParse(txtNights.Text, out dblNights))
        {
            //conversion is successfull
        }
        else
        {
            //conversion is Failed
        }

答案 1 :(得分:0)

我会使用RangeValidator

http://www.w3schools.com/aspnet/control_rangevalidator.asp

省去你重新发明轮子的麻烦。您可以将其Type属性设置为Integer或Double,而不必担心解析值只是为了验证它们。

答案 2 :(得分:-1)

您可以使用html 5

<input type="number" min="1" max="14" />