Alternate keyboard no input text [duplicate]

-1

How to make a key work only in text-type fields when pressed?

Example:

$(":text").keydown(function(e) {
    e.stopPropagation();
});

here is missing the textarea:

if (e.keyCode == 70 && $(e.target).attr('type') != 'text' && $(e.target).attr('type') != 'password') {
}
    
asked by anonymous 25.04.2014 / 02:53

2 answers

2

To prevent the key from being registered if:

  • The key is different from d or e
  • field does not have type=text

You can use this:

$('input, textarea').keydown(function (e) { 
    e.stopPropagation();
    var teclasAceites = e.which == 68 || e.which == 69 || false;
    if (!teclasAceites || $(e.target).attr('type') != 'text') return false;
});

Exmplo online

I put textarea too, but if your HTML does not have it, you can take

    
25.04.2014 / 03:07
1

Do this:

$(function(){

    // vincule o evento o keydown em todos os input type text
    $(":text").keydown(function(e) {
        // se o evento entra aqui ele não se propaga. não sendo cancelado na função global
        e.stopPropagation();
    });
    var cancelKeypress = false;

    // função global que captora todos os demais keydown na pagina e cancela os que você desejar;
    document.onkeydown = function(evt) {
        evt = evt || window.event;
        // na expressão regular você indica os keycodes que você quer bloquear, no caso 68 = d e 69 = f
        cancelKeypress = /^(68|69)$/.test("" + evt.keyCode);
        if (cancelKeypress) {
            return false;
        }
    };

    // hack para o opera
    /* For Opera */
    document.onkeypress = function(evt) {
        if (cancelKeypress) {
            return false;
        }
    };
});

An example here

And textarea is an html tag and not a type of input :

<textarea></textarea>
  

Note: It is important to delegate the order of events, since the text field must occur before the global event.

    
25.04.2014 / 03:07