奇怪、罕见但有问题的行为 单击按钮时访问 jquery UI 输入自动完成的值



基本上,我有时很难从具有自动完成功能的jquery UI输入中获取正确的值。Iv创建了一个jsfiddle来演示行为。很难解释确切的问题,但这是小提琴:

http://jsfiddle.net/B4mXH/14/

要重现,请完全按照以下步骤操作,同时打开浏览器开发工具 js 控制台:

  1. 专注于文本输入
  2. 将鼠标移离输入
  3. C型
  4. 按键盘上的向下箭头选择"ABC"
  5. 将鼠标悬停在选项"CDE"上
  6. 单击按钮。

错误:我不会得到任何值。 未定义记录到控制台。预期:输入框中的任何值。请 =)

如果重要,我使用铬。

如果您将

change处理程序交换为blur处理程序,它将按预期工作:

$('#autocomplete').blur(function(event, ui) {
    value = $(this).val();
});

我不确定为什么,但我假设 UI 以编程方式触发change事件,这些事件会影响您存储的value变量的结果。

此外,如果要始终获取文本输入的当前值,则可以在使用它时查询它,而不是将其存储在变量中:

$('#button').click(function() {
    console.log("clicked with : " + $('#autocomplete').val());
});

您的项目可能会有一些限制,让您暂时不使用它,但如果您可以使用它,这是最防弹的方法。

最新更新