2011-10-18 9 views
10

Sto provando a impostare lo stato attivo su un pulsante mentre l'utente preme il Immettere la chiave nella casella di testo. Ma non sta funzionando. Sto usando Internet   Explorer   8 browser. Mi sto perdendo qualcosa?Impostazione messa a fuoco su un pulsante non funziona

$("input.Box").live('keydown', function(e) { 
    if (e.keyCode == 13) { 
     e.preventDefault(); 
     $("#button").focus(); // Not working? 
    } 
}); 

risposta

6

Microsoft ha deciso che non gli piace e.keyCode e ha invece la propria sintassi, e.which.

Devi controllare per entrambi:

$("input.Box").live('keydown', function(e) { 
    var keyCode = (window.event) ? e.which : e.keyCode; 

    if (keyCode == 13) 
     e.preventDefault(); 
     $("#button").focus(); // Not working? 
    } 
}); 
+0

Per me e.keyCode == 13 sembra funzionare bene .. – Lamps

1

Sei sicuro che il nome sia corretto? .NET ha l'abitudine di rinominare le cose. Non si specifica la lingua o l'ambiente.

Prova a utilizzare il selettore di classe. Assegna al pulsante un nome classe di class="Test" e quindi seleziona utilizzando $(".Text").focus().

+0

Sì, il nome è corretto. – Lamps

9

Il problema è che IE non è in grado di rispondere abbastanza velocemente, quindi è necessario aggiungere un piccolo ritardo tra il momento viene inserito la funzione live, e quando .focus() è chiamato. Quindi, sostituire

$("#button").focus();

con

setTimeout(function() { 
$('#button').focus(); 
}, 100); 

Questo, in combinazione con l'utilizzo di e.which con e.keyCode come Blender suggerito dovrebbe risolvere il problema.

+0

Per me e.keyCode == 13 sembra funzionare bene. – Lamps

-1

Assicurarsi che il DOM sia pronto, l'elemento esiste, prima di provare a mettere a fuoco.

+1

Non sta provando a mettere a fuoco il pulsante sul caricamento del documento. –