我正在使用Telerik.Web.UI版本v4.0.30319。
即使将AllowOutOfRangeAutoCorrect设置为false,MaxValue和MinValue仍然无法正常工作。
以下是我使用的代码。
<telerik:RadNumericTextBox ID="txtMinutes" runat="server" AllowOutOfRangeAutoCorrect="false" MaxValue="1440" MinValue="0" Width="35px" MaxLength="4">
<NumberFormat DecimalDigits="0" />
</telerik:RadNumericTextBox>
它也接受负值
我需要验证RadNumericTextBox的onchange事件,而不是丢失焦点
答案 0 :(得分:1)
您的准则在我的最后工作正常。为了避免负数,你可以验证像这样
<telerik:RadNumericTextBox ID="txtMinutes" runat="server" AllowOutOfRangeAutoCorrect="false" MaxValue="1440" MinValue="0" Width="35px" MaxLength="4">
<NumberFormat DecimalDigits="0" />
<ClientEvents OnKeyPress="OnKeyPress" />
</telerik:RadNumericTextBox>
function OnKeyPress(Sender, args) {
if (args.get_keyCode() == 45`enter code here`) {
alert("-ve number is not allowed!");
args.set_cancel(true);
}
}
答案 1 :(得分:0)
要验证RadNumericTextbox的范围,您需要使用RangeValidator
,如:
<asp:RangeValidator ID="NumericTextBoxRangeValidator"
runat="server"
ControlToValidate="txtMinutes"
ErrorMessage="Please enter in a number between 0 and 100."
Display="Dynamic"
MaximumValue="100" MinimumValue="0" Type="Decimal">
希望这有帮助!
答案 2 :(得分:0)
如果您理解正确,我认为您正在考虑进行服务器端验证。您可以做的是将AutoPostBack
属性设置为 true 并注册OnTextChanged
事件并在后面的代码中进行验证。
ASPX
<telerik:RadNumericTextBox ID="txtMinutes" runat="server" AllowOutOfRangeAutoCorrect="false" Width="35px" MaxLength="4">
<NumberFormat DecimalDigits="0" />
</telerik:RadNumericTextBox>
背后的代码
protected void txtMinutes_TextChanged(object sender, System.EventArgs e)
{
var val = int.Parse(txtMinutes.Text);
if (val < 0 || val > 1440)
{
// do your thing when out of range...
}
else
{
// do your thing when within range...
}
}
请注意以下有关RadNumericTextBox的信息。
使用MaxValue和MinValue属性指定范围 数字文本框。如果用户尝试输入更大的值 比MaxValue属性的值,数字文本框 自动将值更改为MaxValue。同样,如果是用户 尝试输入小于MinValue值的值 属性,数字文本框自动将值更改为 MINVALUE。
RadNumericTextBox不支持最大值和最小值 值大于+/- 2 ^ 46的值。设置MaxValue 属性超过2 ^ 46或MinValue属性小于-2 ^ 46 可能会导致RadNumericTextBox行为异常。