我在所有浏览器中工作正常的textarea期望IE 8。
document.getElementById('verb').onkeypress = function validate(e) {
if (String.fromCharCode((window.event) ? e.which : e.keyCode).match(/[A-Za-z0-9,\s]/) == null) {
alert('Part Number answers must be entered in alphanumeric characters only. \n\nIf you are going to enter more than one Part Number, \nplease use a " , " comma and no space.');
e.preventDefault();
}
};
所以它是一个普通的textarea,其id为动词和In,我只想要空间,','和alphanum。 它不在IE 8中工作。不知道为什么有人可以帮忙。
答案 0 :(得分:0)
您的功能检测失败,因为IE8中e
为undefined
。尝试这样的事情:
.onkeypress = function validate(e) {
var evt = e || window.event;
if ((String.fromCharCode(evt.which || evt.keyCode)).match(/[A-Za-z0-9,\s]/) === null) {
alert(...);
if (evt.preventDefault) {
evt.preventDefault();
}
evt.cancelBubble = true;
evt.returnValue = false;
}
}
答案 1 :(得分:0)
改为使用此
document.getElementById('verb').onkeypress = function(e) {
if (String.fromCharCode((window.event) ? e.which : e.keyCode).match(/[A-Za-z0-9,\s]/) == null) {
alert('Part Number answers must be entered in alphanumeric characters only. \n\nIf you are going to enter more than one Part Number, \nplease use a " , " comma and no space.');
e.preventDefault();
}
};
永远不要将事件作为命名函数传递(我不会在IE8中运行,只需删除“validate”),也可以使用jQuery事件来缩短所有内容:
@RIK:这里有工作,有些清理,现在还可以:
$(function(){
$("#myfield").on("keydown",function(e){
var keyPressEvent = String.fromCharCode(e.keyCode);
if (keyPressEvent.match(/[A-Za-z0-9,\s]/) == null) {
alert('Part Number answers must be entered in alphanumeric characters only. \n\n'
+'If you are going to enter more than one Part Number, \n'
+'please use a " , " comma and no space.');
e.preventDefault();
}
});
});
你可以考虑的其他事情,就是现在一天,使用IE8的人的比率非常低。截至2014年1月,IE8的市场份额仅占10.2%的总份额的3.8%,所以我认为你应该升级你的浏览器或者让你的客户知道升级到比IE8更兼容的IE9或10。 w3schools.com/browsers/browsers_explorer.asp
答案 2 :(得分:0)
要防止在IE中输入不在白名单中的字符,请收听keydown事件。
(其他浏览器也会返回keyCode onkeydown。)
您还需要将returnValue设置为false,IE8不会执行preventDefault。
function validate(e){
e= e || window.event;
var k= e.keyCode || '';
if(/![A-Za-z0-9,\s]/.test(String.fromCharCode(k)){
alert('Part Number blah...');
if(e.preventDefault) e.preventDefault();
else e.returnValue= false;
return false;
}
};
document.getElementById('verb').onkeydown= validate;
答案 3 :(得分:0)
这对我有用。不要为什么以上所有都不起作用
document.getElementById('verb').onkeypress = function validate(e) {
var evt = e || window.event;
if(evt.which== 'undefined') console.log('which');else{console.log(evt.which)}
if(evt.keyCode.match== 'undefined') console.log('key');else{console.log(evt.keyCode);}
var code = evt.keyCode;
console.log(code);
if (/[A-Za-z0-9,\s]/.test(String.fromCharCode(code))) {
console.log('inside');
}else{
alert('dddd');
evt.returnValue = false;
}
}