1

私は自分のプロジェクトでこのデモ by jQuery UI を試していましたが、必要な重要な変更が 1 つ見つかりました。以下のデモを参照してください:

http://jqueryui.com/demos/autocomplete/#custom-data

この例では、「j」と入力していずれかのオプションを選択すると、それに関連するテキストとロゴが取得されます。これは正常に機能しています。ここでは、与えられた自動提案から「jQuery」を選択したとしましょう。左側にテキストと jQuery ロゴが読み込まれます。しかし、これを行った後、「jQuery」という単語の一部の文字をテキストボックスから削除すると、リセットされて空白の出力が表示されるはずです。ただし、以前に読み込まれたテキストとロゴは同じままです。

一般的に、私がやりたいことは、ユーザーが自動提案から何かを選択し、自動提案にないものを書かないようにすることです。

どうすればそれができますか?

前もって感謝します。

4

1 に答える 1

0

select および change イベントをオーバーライドして、これを実現できます。

 $(".combobox").autocomplete({
    minLength: 0,
    source: function (request, respond) {
        //some source
    },
    change: function (event, ui) {
        //if no value inside the LI, reset the input -> uses a custom selector
        if ($(".ui-autocomplete li:textEquals('" + $(this).val() + "')").size() == 0) {
            $(this).val('');
    },
    select: function (event, ui) {
        $(this).val(ui.item.Name);
    }
 );

テキスト入力を比較するには、カスタム セレクターが必要です。

$.expr[':'].textEquals = function (a, i, m) {
    return $(a).text().match("^" + m[3] + "$");
};
于 2012-06-11T10:14:22.910 に答える