我正在使用asp.net网站。 我有asp:texbox。我需要使用javascript验证客户端的文本框。
我想阻止用户输入除了intergers以外的值,并且单独输入0(零)。我的意思是他不应该只输入0。 我怎样才能帮助我。 我只是想阻止用户,不想显示错误信息。
答案 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 =属性......
快乐的编码!
乙