选择后IE8清除JQuery-UI自动完成输入字段

时间:2012-04-04 14:22:47

标签: jquery-ui events internet-explorer-8 autocomplete focus

我有一个jquery_ui自动完成功能。当我点击firefox中的选项时,我的代码按预期运行。当我在IE8中运行它时,某些东西正在清除输入框中的选择(在我的所有代码运行之后)。

我无法识别清除字段的代码 - 我正在逐步完成代码,但它发生在不同的点 - 我正在踩着很多超时,所以也许就是其中之一。

我想我希望有人之前遇到过这个......

更新

好的,我已经设法进一步追踪这个问题。这是我附加到实际删除文本的焦点事件的代码。我的问题似乎与ff和ie

之间触发事件的顺序有关

我在jsfiddle上有一个演示 - http://jsfiddle.net/aidanewen/nKyLu/

我已将我的代码包含在下面 -

<script>
   $(function() {
        var availableTags = [
            "ActionScript",
            "AppleScript",
            "Asp",
            "BASIC",
            "C",
            "C++",
            "Clojure",
            "COBOL",
            "ColdFusion",
            "Erlang",
            "Fortran",
            "Groovy",
            "Haskell",
            "Java",
            "JavaScript",
            "Lisp",
            "Perl",
            "PHP",
            "Python",
            "Ruby",
            "Scala",
            "Scheme"
        ];
        $( "#tags" ).autocomplete({
            source: availableTags,
            select: function(event, ui) {
                $('#output').val(ui.item.label);
            }
        }).focus(function(e) {
            $(this).val("");
        });
    });
</script>

<div id="content_padding">

        <div class="ui-widget">
            <label for="tags">Tags: </label>
            <input id="tags"/>
            <label for="output">Output: </label>
            <input id="output"/>
        </div>

</div>

1 个答案:

答案 0 :(得分:2)

解决方案是将return false添加到焦点事件 -

    $( "#tags" ).autocomplete({
        source: availableTags,
        select: function(event, ui) {
            $('#output').val(ui.item.label);
        }
    }).focus(function(e) {
        $(this).val("");
        return false;
    });