asp:整数的文本框验证和单独的零

时间:2011-08-05 09:48:06

标签: javascript

我正在使用asp.net网站。 我有asp:texbox。我需要使用javascript验证客户端的文本框。

我想阻止用户输入除了intergers以外的值,并且单独输入0(零)。我的意思是他不应该只输入0。 我怎样才能帮助我。 我只是想阻止用户,不想显示错误信息。

1 个答案:

答案 0 :(得分:2)

使用纯粹的ASP.NET,这就是你要找的东西:

<asp:TextBox runat="server" ID="myTb" />
<asp:CompareValidator runat="server" ID="cmp1" Operator="DataTypeCheck" Type="Integer" ControlToValidate="myTb" EnableClientScript="true" ErrorMessage="A numeric value is required." />
<asp:RequiredFieldValidator runat="server" ID="rfv1" InitialValue="0" ControlToValidate="myTb" EnableClientScript="true" Text="*" ErrorMessage="A value is required." />

非常重要的是要明白在这里使用ASP.NET不会忽略非数字键击。这将阻止用户在myTb中提交带有非数字值的表单,并且它将阻止myTb以默认值0提交。

更新:这是使用自定义验证器的替代方法,它允许您在文本框的文本有效时启用更改时的提交按钮 - 请记住,这是onchange,而不是onkeydown / up,因此用户必须更改焦点(标签关闭)在验证器触发之前的文本框)如果您刚刚开始使用javascript,我建议使用解决方案1:

<script type="text/javascript">
function mytb_customValidate(sender, args) {
    if (isNaN(args.Value)) {
        args.IsValid = false;
    } else if (args.Value == 0) {
        args.IsValid = false;
    } else {
        args.IsValid = true;
    }
    $get("btn1").disabled = args.IsValid ? "" : "disabled";
}
</script>

<asp:TextBox runat="server" ID="myTb" /> 
<asp:CustomValidator runat="server" ID="cstv1" ClientValidationFunction="mytb_customValidate" EnableClientScript="true" ControlToValidate="myTb" ValidateEmptyText="true" Text="*" ErrorMessage="A non-zero numeric value is required." />
<asp:Button runat="server" ID="btn1" Text="Click Me!" Enabled="false"/>

最后一次快速更新 - 为了实现您的目标,即不显示验证错误,只需从上面的asp:CustomValidator中删除ErrorMessage =和Text =属性......

快乐的编码!