0

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

2 回答 2

2

只需更换

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

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

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

于 2013-03-26T14:12:59.403 回答
0

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

$("#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;
     //}
   });
于 2020-04-24T16:47:28.073 回答