2010-03-30 4 views
1

자동 완성 위젯을 사용 중이며 항목이 선택되면 대화 상자가 표시됩니다. 대화 상자가 나타나지만 대화 상자의 필드가 열릴 때 포커스를 받길 원합니다. 여기에 지금까지 시도한 것입니다 :jquery ui 1.7 선택 완료시 자동 완성 대화 상자

// 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"); 
         } 
     }); 


     }); 

나는 자동 선택 위젯은 후에 포커스를받는대로 자동 선택의 기본 동작은 여전히 ​​일을하고 있다고 생각 대화 상자가 표시됩니다.

도움을 주시면 감사하겠습니다.

답변

1

것은이 자동 완성의 동작을 재정의하려고 :

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

이 선택 코드가 실행 된 후 실행하는 .focus()를 큐. 자동 완성 (straight from the source code, line 604)를하고있는 무슨이다 : 당신의 선택 (및 개폐 기능) 다시 초점을 훔치는 전화 :

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

가 대단히 감사합니다, 그것은 작동합니다. –