javascript - jquery ui 1.7 自动完成显示选择对话框

标签 javascript jquery html jquery-ui

我正在使用自动完成小部件,并且希望在选择项目时显示一个对话框。该对话框确实显示了,但我希望对话框中的一个字段在打开时接收焦点。这是我到目前为止所尝试过的:

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


      });

我认为自动选择的默认行为仍在执行某些操作,因为自动选择小部件在显示对话框后接收焦点。

任何帮助将不胜感激。

最佳答案

尝试这样做来覆盖自动完成的行为:

$("#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();

关于javascript - jquery ui 1.7 自动完成显示选择对话框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2546937/

相关文章:

html - 在具有 contenteditable 的 div 中输入 webfont 文本同时出现在其他 div 中?

javascript - Angular 页面步骤不更新模型

javascript - 为什么将复选框的 false 值设置为 'undefined' 会导致添加 ng-invalid

javascript - 使用正则表达式将困惑的完整用户名和详细信息列表转换为简单的 samAccountname

JQuery Mobile 对话框未打开

html - 内容隐藏在绝对位置元素中

javascript - 如何组合正则表达式/^1+/和/-/g?

javascript - 仅在将按钮悬停 X 次时才显示 Div - 无法使其正常工作

javascript - 如何创建可折叠下拉菜单?

javascript - 找出层的 css 是否 block jquery