JQuery UI自动完成:响应、Ctrl+A和Backspace

JQuery UI Autocomplete: Response, Ctrl + A and Backspace

本文关键字:响应 Ctrl+A Backspace UI JQuery      更新时间:2023-09-26

我正在编写一个表单,为项目添加成员。只能添加其配置文件记录在系统中的成员。有一个名称输入字段和一个位置选择框。默认情况下,位置选择框处于禁用状态。

想法:

  • 用户键入一个名称,将显示自动完成下拉列表。下拉列表包含其配置文件记录在系统中的成员的名称。

  • 用户在下拉列表中选择一个名称,位置选择框将不显示。

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

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

问题:当我把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');
        }
    }
})

.change()方法在输入框中发生更改时触发。当焦点移出输入框时,会检测到此更改。无论更改的方式如何,它都能工作——无论您是使用退格键删除一个或多个字符,还是使用Ctrl+a选择整个文本并使用退格删除它。当您将焦点移出输入框时,该事件将触发。

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