[英]Text area validation in IE 8 not working
我的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為動詞,在其中,我只需要空格,','和字母數字。 在IE 8中無法正常工作,不知道為什么有人可以幫忙。
由於在IE8中undefined
e
,因此功能檢測失敗。 嘗試這樣的事情:
.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;
}
}
代替這個
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
為防止在IE中不在白名單中輸入字符,請偵聽keydown事件。
(其他瀏覽器還會在keydown上返回keyCode。)
您還需要將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;
這對我有用。 別為什么上述所有方法都不起作用
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;
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.