禁用页面上的输入键,但不能在textarea中输入

时间:2017-06-26 17:41:14

标签: javascript

当我按ENTER键时,页面消失。所以我禁用表单的回车键。但如果我在Textarea,我想启用新行的输入键。不是一个JQUERY解决方案请。

 function stopRKey(evt){

        var evt = (evt) ? evt : ((event) ? event : null);
        var node = (evt.target) ? evt.target : ((evt.srcElement) ? 
         evt.srcElement : null);
        if ((evt.keyCode == 13) && (node.type=="text")) {
            return false;
        }
        else if((evt.keyCode==13) && (node.type=="checkbox")){
            return false;
        }

        else if((evt.keyCode==13) && (node.type=="table")){
           return false;
        }
        else if((evt.keyCode==13) && (node.type=="file")){
           return false;
        }
        else if((evt.keyCode==13) && (node.type=="paragraph")){
           return false;
        }
        else if((evt.keyCode==13) && (node.type=="textarea")){
           return false;
        }
        else if((evt.keyCode==13) && (node.type=="list")){
           return false;
        }
        else if((evt.keyCode==13) && (node.type=="choice")){
           return false;
        }

        else if((evt.keyCode==13) && (node.type=="date")){
           return false;
        }
        else if((evt.keyCode==13) && (node.type=="ip_cidr")){
            return false;
        }
        else {
           return true;
        }
 };
   document.onkeypress = stopRKey;

4 个答案:

答案 0 :(得分:0)

document.activeElement为您提供当前关注的元素。



function stopRKey(ev){
  if (ev.which == 13){ // which normalizes charCode and keyCode
    var e  = document.activeElement;
    if (e.type == "textarea") return true; // this can also be e.id or e.classList
    else return false;
  }
}

document.onkeypress = stopRKey;

<input type="text">

<textarea></textarea>
&#13;
&#13;
&#13;

答案 1 :(得分:0)

这是另一个解决方案:

var textAreas=document.getElementsByTagName('textarea');
   for(var i=0;i<textAreas.length;i++){
       textAreas[i].onkeypress=stopRKey;
   }

答案 2 :(得分:0)

我在移动设备上,所以没有经过测试,但这应该可行

document.addEventListener('keypress', e => {
    If(document.querySelector(':focus').type !== 'textarea' && e.keyCode == 13) {
        e.preventDefault();
    }
});

答案 3 :(得分:0)

 document.onkeypress = function(evt) {
 if(evt.target.toString() !== '[object HTMLTextAreaElement]' && evt.charCode === 13){
  evt.preventDefault();
  return;
 }
};