JQuery UI自动完成:响应,Ctrl + A和退格

时间:2015-11-18 13:01:36

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

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

这个想法:

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

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

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

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

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

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:-1)

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