jQueryUI使用默认文本自动完成

时间:2013-03-26 14:08:51

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

我有一个jQuery自动完成小部件,在输入中有一些默认的着色文本,例如“输入内容”http://jsfiddle.net/CwmX9/。用户在输入字段中键入内容并从下拉列表中选择内容后,我希望将输入返回到着色的默认文本。我差不多了,但它没有阴影。此外,理想情况下,我不必两次复制文字默认文本(即“输入内容”)。如何修改我的脚本呢?

PS。还请解释为什么有时输入值并不总是与我在输入中实际看到的字符相同。我认为这可能与我原来的问题有些相关。

<div class="ui-widget">
    <label for="tags">Tags:</label>
    <input id="tags" value="Enter Something" class="default-value" />
</div>

$('.default-value').each(function () {
    var $t = $(this),
        default_value = this.value;
    $t.css('color', '#929292');
    $t.focus(function () {
        if (this.value == default_value) {
            this.value = '';
            $t.css('color', 'black');
        }
    });
    $t.blur(function () {
        if ($.trim(this.value) == '') {
            $t.css('color', '#929292');
            this.value = default_value;
        }
    });
});

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) {
        console.log(this);
        //console.log(this,$(this).val());
        $(this).val('Enter Something').blur();
        //console.log(this,$(this).val());
        return false;
    }
});

2 个答案:

答案 0 :(得分:1)

只需替换

$(this).val('Enter Something').blur();

$(this).val('').blur();

以下是修改后的示例:http://jsfiddle.net/netme/beFVr/

答案 1 :(得分:0)

jsfiddle提供的Mikhail Chernykh答案很好。但是,当我在自动完成列表中进行选择时,该选择不会填充到输入中。为了使其正常工作,我只需要从自动完成功能中删除选择功能。

$("#tags").autocomplete({
source: availableTags,
//select: function (event, ui) {
     //console.log(this);
     //console.log(this,$(this).val());
     //$(this).val('').blur();
     //console.log(this,$(this).val());
     //    return true;
     //}
   });