我有以下javascript以防止用户在文本字段中输入无效字符。它在chrome中运行良好,但在firefox中运行不佳。它阻止在firefox的文本字段中输入 backspace 键。
function onlyNumbers(evt) {
var theEvent = evt || window.event;
var key = theEvent.keyCode || theEvent.which;
key = String.fromCharCode( key );
var regex = /[0-9]|\./;
if( !regex.test(key) ) {
theEvent.returnValue = false;
if(theEvent.preventDefault) theEvent.preventDefault();
}
}
任何人都可以看看并建议修复firefox,以防止退格键操作文本字段?
可能我想,为退格字符添加正则表达式可以在这里完成工作。有谁知道,如何添加正则表达式匹配退格
此外,上面的代码应该用 Tab 键行为中断,我无法使用 Tab 键跳转到表单中的下一个字段。
答案 0 :(得分:7)
请参阅http://jsfiddle.net/8ZJZD/1/
var el=document.getElementById('cnfMobileNo');
el.onkeydown=function onlyNumbers(evt) {
var theEvent = evt || window.event;
var key = theEvent.keyCode || theEvent.which;
if(key===8){return;}
key = String.fromCharCode(key);
var regex = /[0-9]|\./;
if( !regex.test(key) ) {
theEvent.returnValue = false;
if(theEvent.preventDefault) theEvent.preventDefault();
}
}
只需使用if(key===8){return;}
修改强>
如果要排除更多密钥,请使用
var el=document.getElementById('cnfMobileNo');
el.onkeydown=function onlyNumbers(evt) {
var theEvent = evt || window.event,
key = theEvent.keyCode || theEvent.which,
exclusions=[8,9]; /*Add exceptions here */
if(exclusions.indexOf(key)>-1){return;}
key = String.fromCharCode(key);
var regex = /[0-9]|\./;
if( !regex.test(key) ) {
theEvent.returnValue = false;
if(theEvent.preventDefault) theEvent.preventDefault();
}
}
请在此处查看:http://jsfiddle.net/8ZJZD/2/
您可以使用keyCode
alert(key)
(key = String.fromCharCode(key)
之前)。
您也可以排除
答案 1 :(得分:0)
我不确定退格正则表达式,但这也应该有用
$("#myInput").bind('keyup', function(){
val1 = $(this).val();
$(this).val(val1.replace(/[^0-9.]/g,''));
});
您可以取消使用bind并直接附加keyup
小提琴 - jsfiddle