2011-04-29 7 views
5

Ho bloccato la chiave Invio (ritorno), in realtà, trasformata in chiave Tab. Quindi, quando premuto all'interno dei campi di testo di input, funge da tasto Tab. Questo è un bene, ma ho bisogno per attivare il pulsante di invio quando premuto nell'ultimo campo, al di sotto è il codice per la mutazione tasto Invio:jQuery come rendere Enter (Invio) funge da tasto Tab tramite i campi di testo di input, ma alla fine attiva il pulsante di invio

  $('input').keydown(function(event) { 
       if(event.which == 13) { 
        event.preventDefault(); 
        $(this).nextAll('input:first').focus(); 
       } 
      }); 

E il codice del modulo è una sequenza di input type =" testo " e un pulsante tipo =" invia " alla fine [Modificato] In realtà il codice è questo, preso da jquery: Enter to Tab trigger in specific parts. Ma io non so perché si stava lavorando ieri oggi non funziona:

$(':text').keydown(function(e) { 
    if(e.keyCode == 13 && $(this).attr('type') != 'submit') { 
     e.preventDefault(); 
     $(this).nextAll('input:first').focus(); 
    } 
}); 
+0

Penso di avere questo codice qui nello stack – tenshimsm

risposta

6

Se date il vostro ultimo ingresso della classe dello scorso poi semplicemente modificare il codice per qualcosa come

$('input').keydown(function(event) { 
      if(!$(this).hasClass("last")){ 
       if(event.which == 13) { 
        event.preventDefault(); 
        $(this).nextAll('input:first').focus(); 
       } 
      } 
     });  
+0

Grazie amico, ma sembra che ci sia qualcosa di sbagliato qui il codice non funziona con o senza le tue modifiche. Non so cosa ho fatto di sbagliato. – tenshimsm

+0

A destra, ho un po 'tritato il codice - http://jsfiddle.net/zfBNE/ - ti aiuta? –

+0

Il problema è che anche il vecchio codice ha smesso di funzionare qui. In jsfiddle sta funzionando bene – tenshimsm

-1
// Definir o que acontece quando o usuário pressiona ENTER 
$('input, select, textarea').live('keydown', function(e) { // Para todos os campos do formulário 
    if (e.which == 13) { // Se pressionou ENTER 
     if (e.ctrlKey) { // Se pressionou CTRL 
      $(this).closest('form').submit(); // Envia o formulário 
     } else { // Se não 
      var fields = $(this).closest('form').find('input, select, textarea'); // Criamos uma lista dos campos do formulário 
      var total = fields.length; // Identificamos a quantidade de campos 
      var index = fields.index(this); // Identificamos a posicao do campo atual 
      fields // Da lista de campos, ... 
        .eq(// na posicao ... 
         index + // do campo atual + ... 
         (e.shiftKey // Pressionou a tecla SHIFT? 
          ? // Se pressionou ... 
           (index > 0 // A posição atual é maior que 0 (zero)? 
            ? // Se for maior 
             -1 // campo anterior 
            : // Se não ... 
             0 // Primeiro campo 
           ) 
          : // Se não ... 
           (index < total // Posicao atual é menor que o total de campos? 
            ? // Se for menor ... 
             +1 // proximo campo 
            : // Se não ... 
             total // Último campo 
           ) 
         ) 
         // Neste momento ja encontramos o campo que deverá ser selecionado 
        ).focus(); // Selecionamos o campo 
      return false; // Impedimos que a ação padrão seja executada (Envio do formulário) 
     } // FIM - se não pressionou CTRL 
    } // FIM - se pressionou ENTER 
}); // FIM da função 
+0

Nessuno di questi funzionerà su Mac - c'è un altro codice chiave per entrare/tornare. – versedi