/ / jquery ui 1.7 finestra di dialogo di completamento automatico su select - javascript, jquery, html, jquery-ui

jquery ui 1.7 finestra di dialogo di completamento automatico su select - javascript, jquery, html, jquery-ui

Sto usando un widget di completamento automatico e vorreiuna finestra di dialogo per mostrare quando un oggetto è selezionato. La finestra di dialogo appare, ma voglio che un campo nella finestra di dialogo riceva il focus quando si apre. Ecco cosa ho provato finora:

// HTML

<form action="#">
<p><input id="busca" /></p>
</form>
<div id="agregar" title="Agregar Parte">
<label for="cantidad">Cantidad:</label>
<input name="cantidad" id="cantidad" size="3" />
</div>

// jquery

 $(function(){

$("#agregar").dialog({
autoOpen: false,
//also tried open: function(){$("#cantidad").focus()}
}
);
//.bind("dialogfocus", ... ) does not work either
$("#agregar").bind("focus", function(){
$("#cantidad").focus(); });

$("#busca").autocomplete({
source: "/carrito/autocomplete/",
minLength: 1,
select: function(e, ui) {
$("#agregar").dialog("open");
}
});


});

Penso che il comportamento predefinito di AutoSelect stia ancora facendo qualcosa mentre il widget di selezione automatica riceve lo stato attivo dopo che la finestra di dialogo è stata mostrata.

Qualsiasi aiuto sarebbe molto apprezzato.

risposte:

1 per risposta № 1

Prova a sovrascrivere il comportamento del completamento automatico:

$("#agregar").dialog({
autoOpen: false,
open: function(){
setTimeout(function() { $("#cantidad").focus(); }, 0);
}
});

Questo fa la coda al .focus() per funzionare dopo che il codice selezionato è stato eseguito. Questo è ciò che sta facendo il completamento automatico (direttamente dal codice sorgente, riga 604): chiama la tua selezione (e quella funzione aperta), quindi ruba il focus indietro:

select();
// TODO provide option to avoid setting focus again after selection?
// useful for cleanup-on-focus
input.focus();