2

我有一个 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>
4

1 回答 1

2

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

    $( "#tags" ).autocomplete({
        source: availableTags,
        select: function(event, ui) {
            $('#output').val(ui.item.label);
        }
    }).focus(function(e) {
        $(this).val("");
        return false;
    });
于 2012-05-24T08:28:43.070 回答