正在验证';%';和';(';在JavaScript上)
大家好。我有以下功能来验证输入,具体取决于输入是数字、字母、字母数字还是电子邮件:正在验证';%';和';(';在JavaScript上),javascript,validation,Javascript,Validation,大家好。我有以下功能来验证输入,具体取决于输入是数字、字母、字母数字还是电子邮件: function permite(e, permitidos) { var key = e.keyCode || e.which; //Validate if its an arrow or delete button if((key == 46) || (key == 8) || (key >= 37 && key <= 40)) re
function permite(e, permitidos) {
var key = e.keyCode || e.which;
//Validate if its an arrow or delete button
if((key == 46) || (key == 8) || (key >= 37 && key <= 40))
return true;
var keychar = String.fromCharCode(key);
switch(permitidos) {
case 'num':
permitidos = /^[0-9]$/;
break;
case 'car':
permitidos = /^[\sa-zA-Z]$/;
break;
case 'num_car':
permitidos = /^[\sa-zA-Z0-9]$/;
break;
case 'correo':
permitidos = /^[a-zA-Z0-9._\-+@]$/;
break;
}
return permitidos.test(keychar);
}
功能许可证(e,许可证){
var key=e.keyCode | | e.which;
//验证其是否为箭头或删除按钮
如果((key==46)| |(key==8)| |(key>=37&&key稍微有点奇怪(抱歉),但您可能想看看其中一个Javascript库,例如JQuery;几乎所有这些库都带有(或有)用于“验证输入”的库
例如:如果您使用jQuery,您可以考虑“验证”插件-< /p> 检查是否还按下了shift键:
//验证它是箭头还是删除按钮
如果((key==46)| |(key==8)| |(key>=37&&key则keypress
事件不会触发箭头和删除键,因此您可以删除if
语句。该死的FireFox
您混淆了keyCode
和charCode
,这是可以理解的,因为event.keyCode
实际上包含charCode
的keyPress
事件,与keydown
和keyup
不同。的keyCode>(
是57)(与9
相同-这些字符位于同一个键上)。其字符码为40。箭头键没有字符码,因此不会触发keypress
事件。(FireFox中除外…Argh!)
您最好使用keydown
事件,查找keyCode
,而不是charCode
,必要时检查shift键。按下shift键时,您必须手动将键盘代码映射到字符。这仅适用于用户必须按下shift
才能生成字符的键盘%
或(
)。
//Validate if its an arrow or delete button
if((key == 46) || (key == 8) || (key >= 37 && key <= 40 && !e.shiftKey))
return true;