Po naciśnięciu klawisza Enter strona znika. Wyłączam więc klucz do formularza. Ale jeśli jestem w Textlai, chcę włączyć klucz do nowej linii. Proszę o rozwiązanie 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;
0
shashank 26 czerwiec 2017, 20:41

4 odpowiedzi

Najlepsza odpowiedź

document.activeElement zapewnia aktualnie skupiony element.

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>
0
Luca Kiebel 26 czerwiec 2017, 17:53
 document.onkeypress = function(evt) {
 if(evt.target.toString() !== '[object HTMLTextAreaElement]' && evt.charCode === 13){
  evt.preventDefault();
  return;
 }
};
0
Amin Pourhadi 26 czerwiec 2017, 18:19

Jestem na mobilnym, więc nie testowany, ale to powinno działać

document.addEventListener('keypress', e => {
    If(document.querySelector(':focus').type !== 'textarea' && e.keyCode == 13) {
        e.preventDefault();
    }
});
0
cmd430 26 czerwiec 2017, 17:59

Oto kolejne rozwiązanie:

var textAreas=document.getElementsByTagName('textarea');
   for(var i=0;i<textAreas.length;i++){
       textAreas[i].onkeypress=stopRKey;
   }
0
liontass 26 czerwiec 2017, 17:59