我有ASPxTextbox,我试图阻止用户输入字母。所以我有我的控制代码:
<dxe:ASPxTextBox ID="phone" Text="" runat="server" MaxLength="18" Width="100px>
<ClientSideEvents Validation="Validation" KeyDown = "SkipLetters"/>
<ValidationSettings ErrorDisplayMode="ImageWithText" ErrorTextPosition="Bottom" ValidateOnLeave="true" />
</dxe:ASPxTextBox>
和SkipLetters的javascript:
function SkipLetters(s, e) {
if (e.htmlEvent.keyCode <= 90 && e.htmlEvent.keyCode >= 65) {
e.htmlEvent.returnValue = false;
}
}
我知道这些字母什么时候输入,但实际上我不知道如何防止它:)我已经尝试将var content = s.GetText()作为跳过者的第一次调用,但为时已晚,内容已更改。那么我应该在if语句中使用GetText,查找字母并将其删除,还是有可能阻止将它们添加到文本框内容中?
答案 0 :(得分:1)
为此目的使用ASPxSpinEdit。它专门设计用于允许最终用户仅输入数字。
答案 1 :(得分:0)
我找到了解决方案。 “使用force trn!”如果有人需要:
<dxe:ASPxTextBox ID="visiblePhoneNumber" Text="+48" runat="server" MaxLength="18"
Width="100px">
<ClientSideEvents Validation="PhoneNumberValidation" KeyPress = "CheckKey" />
<ValidationSettings ErrorDisplayMode="ImageWithText" ErrorTextPosition="Bottom" ValidateOnLeave="true" />
<ValidationSettings>
<RegularExpression ValidationExpression = "[0-9\s\-\+\(\)]{9,18}" />
</ValidationSettings>
</dxe:ASPxTextBox>
JavaScript的:
function CheckKey(s, e) {
var key = ASPxClientUtils.GetKeyCode(e.htmlEvent);
var char = String.fromCharCode(key);
if (e.htmlEvent.shiftKey) {
if (!IsAvailableChar(char))
ASPxClientUtils.PreventEvent(e.htmlEvent);
} else
if (!(IsAvailableChar(char) || IsAvailableKey(key))) ASPxClientUtils.PreventEvent(e.htmlEvent);
return;
}
function IsAvailableChar(char) {
var AvailableChars = "0123456789+- ()";
return AvailableChars.indexOf(char) != -1;
}
function IsAvailableKey(key) {
switch (key) {
case 8: //backspace
return true;
break;
case 189: //minus
return true;
break;
case 46: //delete
return true;
break;
case 37: //left arrow
return true;
break;
case 39: //right arrow
return true;
break;
case 16: //shift
return true;
break;
default:
return false;
break;
}
}