2011-04-29 13 views
5

Tôi đã chặn phím Enter (return), thực sự đã chuyển đổi nó trong phím Tab. Vì vậy, khi được nhấn bên trong các trường văn bản nhập, nó sẽ hoạt động như phím Tab. Đây là tốt, nhưng tôi cần nó để kích hoạt nút gửi khi ép trong lĩnh vực cuối cùng, dưới đây là mã cho Enter đột biến quan trọng:jQuery làm thế nào để làm cho Enter (Return) hoạt động như phím Tab thông qua các trường văn bản đầu vào nhưng cuối cùng kích hoạt nút gửi

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

Và mã hình thức là một chuỗi các input type =" văn bản " và một loại nút =" gửi " ở cuối [Đã chỉnh sửa] Thực ra mã này là mã, được lấy từ jquery: Enter to Tab trigger in specific parts. Nhưng tôi không biết tại sao nó đã làm việc ngày hôm qua nay không hoạt động:

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

Tôi nghĩ rằng tôi đã có mã này ở đây trong ngăn xếp – tenshimsm

Trả lời

6

Nếu bạn cung cấp cho đầu vào cuối cùng của bạn lớp của cuối cùng sau đó chỉ cần sửa đổi mã của bạn để một cái gì đó giống như

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

Cảm ơn người đàn ông, nhưng có vẻ như có cái gì đó sai ở đây mã không làm việc có hoặc không có thay đổi của bạn. Tôi không biết mình đã làm gì sai. – tenshimsm

+0

Đúng, không có chút mã - http://jsfiddle.net/zfBNE/ - điều đó có giúp ích gì không? –

+0

Vấn đề là ngay cả mã cũ cũng ngừng hoạt động ở đây. Trong jsfiddle là làm việc tốt – 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

Không có điều nào trong số này sẽ hoạt động trên máy Mac - có mã khóa khác để nhập/trả lại. – versedi

Các vấn đề liên quan