2016-07-26 8 views
0

を隠す前に、私は、テキストボックスと以下のような順序なしリストを持っています良い。火クリックイベントUL

私はcomboboxのようなものを作ろうとしています。

だから、私の希望動作は次のとおりです。テキストボックスがフォーカスを失ったとき

  • 、提案は
  • (上記示されている)非表示にする提案をクリックすると、そのクリックイベントが発生しなければならないし、その提案のテキストが満たされる必要がありますテキストボックスにして、すべての提案を非表示にする必要があります火、その後ulなければならない、私はどのliliclickイベントをクリックすると、第二の機能のために、そう
  • を非表示にします。

    答えて

    1

    var items = ["Apple", "Banana", "Celery", "Peach", "Plum"]; 
     
    
     
    $('input').on('input', function() { 
     
        var text = $(this).val(); 
     
        $('ul').show().empty().append(items.filter(function(item) { 
     
        return item.match(new RegExp(text, 'i')); 
     
        }).map(function(text) { 
     
        return $('<li>').text(text); 
     
        })); 
     
    }); 
     
    
     
    $('input').on('blur', function() { 
     
        $('ul').fadeOut(); 
     
    }); 
     
    
     
    $('ul').on('click', 'li', function() { 
     
        $('input[type=text]').val($(this).text()); 
     
        $('ul').hide(); 
     
    });
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> 
     
    <div> 
     
        <input type="text" /> 
     
        <button>Go</button> 
     
    </div> 
     
    <ul> 
     
    </ul>

    +0

    回答ありがとうございます。アップルをクリックしてみてください。 – Vishal

    +0

    @Vishalが修正されました。ところで、これはキーボードからアクセス可能ではありません。あなたの正確な必要性に応じて、あなたは単に 'combobox'を使いたいかもしれません。 – acbabis

    +0

    私のulはスクロールバーを持つかもしれないので、私はタイムアウトを使用しません。ユーザーがスクロールするとタイムアウト後にulが消えることがあります。それでも私はあなたに何か他のことを尋ねる前にそれを試みます。お返事ありがとうございました。 – Vishal

    0

    テキストボックスを更新し、liの同じクリックイベント内でulを非表示にするだけです。

    $("li").on("click", function() { 
        $("input[type=text]").val(this.text()); 
        $("ul").hide(); 
    }); 
    

    申し訳ありません申し訳ありませんが、jQueryは完璧ではない - 私はそれを頻繁に使用しません。とにかくこれは助けになるはずです。

    +0

    私は質問をする前にこれを試してみました。私がliをクリックすると、textboxはすでにフォーカスを失っているので、ulは隠されていて、liは隠されているので、liのクリックは発射されません。 – Vishal

    +0

    ああ、大丈夫です。私はその投稿からそれを得ていませんでした。とにかく解決策があるようです。 ^^ – Whothehellisthat

    +0

    はい、私は解決策を得ました。手伝ってくれてありがとう。 – Vishal