簡體   English   中英

IE 8中的文本區域驗證不起作用

[英]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();
          }
    });
});

http://jsfiddle.net/JH2kp/

您可能會考慮的另一件事是,現在有一天,使用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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM