我有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;
}
}我知道字母是什么时候输入的,但实际上我不知道如何防止它:)我尝试在skipletters中第一次调用content = s.GetText(),但为时已晚,内容发生了变化。那么我是否应该在if语句GetText中找到字母并删除它们,或者是否有可能阻止将它们添加到文本框内容中?
发布于 2011-07-13 21:16:46
我找到了一个解决方案。“使用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>JavaScripts:
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;
}
}发布于 2011-07-13 16:38:59
为此,请使用ASPxSpinEdit。它是专门为允许最终用户只输入数字而设计的。
https://stackoverflow.com/questions/6676020
复制相似问题