释放密钥时删除JQuery keydown事件更改

释放密钥时删除JQuery keydown事件更改,jquery,events,time,keydown,short,Jquery,Events,Time,Keydown,Short,我正在尝试创建一个自动建议框。当用户开始键入tagSelection输入字段时,JQuery通过Ajax从数据库中获取建议,并将其显示在tagSelection字段正下方的suggestBox div中 现在,我想让用户使用向下箭头键选择其中一个建议。我已经开始通过处理keydown事件并在此事件期间为第一个条目分配一个类来构建它。我面临的问题是,当我松开向下箭头键时,该类再次被删除。当我放开钥匙时,我需要它保持指定状态。可能吗 HTML <div class="form-entry"&g

我正在尝试创建一个自动建议框。当用户开始键入tagSelection输入字段时,JQuery通过Ajax从数据库中获取建议,并将其显示在tagSelection字段正下方的suggestBox div中

现在,我想让用户使用向下箭头键选择其中一个建议。我已经开始通过处理keydown事件并在此事件期间为第一个条目分配一个类来构建它。我面临的问题是,当我松开向下箭头键时,该类再次被删除。当我放开钥匙时,我需要它保持指定状态。可能吗

HTML

<div class="form-entry">
    <input id="tagSelection" name="tags" type="text" value="" size="40">

    <div id="suggestBox" style="">
        <a href="#" id="1">design</a>
        <a href="#" id="3">debit card</a>
        <a href="#" id="4">deer</a>
    &nbsp;
    <a href="#" id="addTag">Add word</a>

    <div id="selectedTags"></div>

</div>

如果我没有弄错的话,jqueryautocomplete在这种情况下就足够了。试试这个

JS代码:

在PHP中,它应该是这样的


我在这里发现了完全相同的问题:

似乎我确实有一些其他JQuery代码干扰了我的事件处理程序。每当有人在tagSelection字段中释放一个键时,就会触发一个JQuery方法,从db中检索建议。已存在的keyup事件干扰了我的新keydown事件

(function() {
    $('#tagSelection').keyup(tagboxTypingHandler)
})();


function tagboxTypingHandler(event) {
    if (event.keyCode != 40) {
        var substring = $('#tagSelection').val();
        if (substring.length > 1) {
            $.get("http://localhost:8080/tag/search/" + substring, returnedTagsHandler);
        }
    }
}

我刚刚添加了event.keyCode!=40条件,现在该类仍保留在建议中,并且它可以工作:-

40是向下键ascii码?什么是“[tagSelected=1]”?你是说“.tagSelected”吗?或者你在使用一种我不知道的技术。上面的代码看起来不可能删除类;检查其他事件处理钩子。我更喜欢这个问题的答案。我需要太多的自定义行为来配合第三方插件,我想自己学习这些东西。autocomplete只是一个jquery的东西。你已经用过了,你也不尊重我吗?我有相同的答案吗?
<div class="ui-widget">
    <label for="tags">Tags: </label>
    <input class="ui-widget ui-widget-content ui-corner-all" id="tags">
</div>

$( "#tags" ).autocomplete({
    source: [ "c++", "java", "php", "coldfusion", "javascript", "asp", "ruby", "python", "c", "scala", "groovy", "haskell", "perl" ],
    delay: 0
});
$("input").keypress( function() {
var s = $(this).val();
$.ajax({
other params
success: function(data) { // here data contains all the suggest echoed with comma seprated (see below)
var s = data.split(",");
$(this).autocomplete({
    source: s,
    delay: 0
});
});
});
siren,sam,sami,salman
(function() {
    $('#tagSelection').keyup(tagboxTypingHandler)
})();


function tagboxTypingHandler(event) {
    if (event.keyCode != 40) {
        var substring = $('#tagSelection').val();
        if (substring.length > 1) {
            $.get("http://localhost:8080/tag/search/" + substring, returnedTagsHandler);
        }
    }
}