【问题标题】:jQuery autocomplete force change before form is submitted提交表单之前jQuery自动完成强制更改
【发布时间】:2023-03-06 09:32:01
【问题描述】:

使用 jquery 我有一个自动完成文本框,例如 jQuery UI 网站http://jqueryui.com/demos/autocomplete/#combobox上的组合框示例@

$("#mycombobox").combobox();

这基本上是一个输入文本框、菜单和按钮。

问题出在我有 mycombobox 的 aspx 页面上,有一个 asp:button,当按下 Enter 键时,它连接起来提交表单。

在组合框中

$(<input>)
.autocomplete(...)
.keydown(function (e) {
    var keyCode = e.keyCode || e.which;
    if (keyCode == 13 || keyCode == 108) {
        $(this).blur();
        return false;
    }
    return true;
})

keydown 是我阻止它提交的 hacky 方法,但它只做对了一半。我希望您第一次按回车键调用自动完成的更改事件,第二次按回车键可以提交表单。

如果没有 keydown hack,仍然会在自动完成上调用更改,但直到调用提交之后,使用旧值。我宁愿完全不这样做,而是找到更好的方法。

编辑
如果选择了某些东西,它的行为是正确的,当菜单显示时我如何手动选择第一个选项?

【问题讨论】:

    标签: jquery asp.net jquery-ui form-submit jquery-autocomplete


    【解决方案1】:

    您可以检查自动完成 UI 是否可见以处理按 Enter 会执行的操作

    $('.ui-autocomplete').is(':visible')
    

    【讨论】:

    • 这不会在 100% 的时间里工作,但它会在什么时候被认为是可见的?
    • true 如果没有选择您可能想要提交的项目,因此您可以添加一个检查除了可见检查之外是否有选择的项目,例如$('.ui-autocomplete').is(':visible') &amp;&amp; $('#ui-active-menuitem').length &gt; 0
    猜你喜欢
    • 2012-01-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多