0

images:ユーザーがリンクをクリックしたときに検索ボックスにテキストを追加する短い jQuery スクリプトがあります。ただし、ユーザーが代わりに別のタブをクリックすると、入力した検索は削除されます。ユーザーが入力したもの(何かを入力した場合)を保持したいのですが、これは常に:. それ以前のものはすべて削除できます。

どうすればいいですか?

私の現在のjQueryは次のとおりです。

$(document).ready(function(){
    $("#navigation a").click(function(){
        $("#search").val($(this).attr("id")+': ').focus();
        return false
    });
});

私のHTMLは:

<ul id="navigation">
    <li><a href="#" id="images">Images</a></li>
    <li><a href="#" id="videos">Videos</a></li>
    <li><a href="#" id="articles">News</a></li>
    <li><a href="#" id="weather">Weather</a></li>
</ul>

<input type="text" id="search">

JSFiddle で現在のコードの実例を見ることができます: http://jsfiddle.net/Zusnw/

4

2 に答える 2

0

これがあなたが望む修正です。

$(document).ready(function(){
    $("#navigation a").click(function(){
        var searchBox = $("#search");
        var searchBoxVal = searchBox.val();     
        var newVal = '';
        if(searchBoxVal.indexOf(":") > -1)
        {
            // get the content after the colon...
            newVal = this.id + ":" +searchBoxVal.substring(searchBoxVal.indexOf(":")+1);
        }
        else
        {
            newVal = this.id + ": ";
            if(searchBoxVal.length > 0) 
            {
                // if colon not found but user has type anythings...
                newVal += searchBoxVal;
            }
        }
        searchBox.val(newVal);
        searchBox.focus();
        return false;
    });
});
于 2013-02-24T16:00:13.060 に答える
0

私は提案します:

$("#navigation a").click(function(){
    var search = $('#search'),
        curVal = $('#search').val(),
        i = curVal.indexOf(':'),
        newVal = i !== -1 ? curVal.substring(i) : ': ' + curVal;
    $('#search').focus().val(this.id + newVal);
});

JSフィドルデモ

于 2013-02-24T15:57:18.697 に答える