【问题标题】:JQuery UI Autocomplete: Response, Ctrl + A and BackspaceJQuery UI 自动完成:响应、Ctrl + A 和 Backspace
【发布时间】:2015-11-18 13:01:36
【问题描述】:

我正在制作一个表单来将成员添加到项目中。只能添加其档案记录在系统中的成员。有一个名称输入字段和一个位置选择框。位置选择框默认是禁用的。

想法:

  • 用户输入姓名,自动完成下拉菜单出现。下拉列表包含其个人资料记录在系统中的成员的姓名。

  • 用户在下拉列表中选择一个名称,位置选择框将取消禁用。

  • 如果在此之后,用户对名称输入字段进行了任何更改,位置选择框将再次被禁用,并且自动完成下拉菜单再次出现。

我将禁用的事件放入自动完成的响应事件中。

问题:当我把 Backspace 放到输入字段时,位置选择框被禁用,但是当我把 Ctrl + A 然后Backspace,它不是。我该如何解决这个问题?

$("#autocomplete").autocomplete({
    source: function(request, response) {
        //some ajax stuffs
    }, 
    select: function (e, ui) {
        $('#verified').val('true'); //the name is already recorded 
        $('#selectPosition').removeAttr('disabled');
    },
    response: function(event, ui) {
        if($('#verified').val() == 'true') {
            $('#verified').val('');
            $('#selectPosition').attr('disabled','disabled');
        }
    }
})

【问题讨论】:

    标签: javascript jquery jquery-ui jquery-events jquery-ui-autocomplete


    【解决方案1】:

    .change() 方法在输入框中发生更改时触发。 当焦点移出输入框时会检测到这种变化。 无论如何进行更改,它都有效 - 无论您是使用退格键删除一个字符/字符,还是使用 Ctrl + A 选择整个文本并使用退格键将其删除。 当您将焦点移出输入框时,该事件将触发。

    【讨论】:

    • 我在一个包含输入框的 HTML 文件中添加了以下脚本(不用说,它应该包括 JQuery):<script> $(document).ready(function() { $('input').change(function() { console.log('Change!'); }); }); </script>
    • 它不适合我。我把 Ctrl A 然后 Backspace ,什么也没发生。然后我点击了别的东西把焦点移出输入框,也没有任何反应。
    • 让我看看你的代码;也许你错过了什么。我正是这样做的,它对我有用。尝试使用任何其他简单的 JQuery 方法来确保您的导入正常工作。
    • 如果输入为空,它不会触发,然后你输入一些东西,然后 ctrl+a + 退格并单击,:D。这很愚蠢,但任何其他改变输入文本的操作都会正常触发事件,即使在 ctrl+a 退格之后也是如此。 :D。奇怪的问题奇怪的答案 - 尝试 .blur(function(){}) 代替:D.
    • 我很抱歉。我将事件放在自动完成字段的响应事件中,而不是更改事件中。我的意思是询问响应事件。我已经编辑了问题。
    【解决方案2】:

    您可以使用 .keyup() 代替 .change(),这样每次释放密钥时它都会更新。

    【讨论】:

    • 你能用你正在使用的代码更新你的问题吗?或者更好的是 JSFiddle。
    • 我很抱歉。我将事件放在自动完成字段的响应事件中,而不是更改事件中。我的意思是询问响应事件。我已经编辑了问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-05
    • 1970-01-01
    • 2011-01-24
    相关资源
    最近更新 更多