7

選択した複数選択入力のテキストフィールドにユーザーが入力したテキストをオプションとして追加し、それを自動的に選択したいのですが、オプションが存在しない場合はすべて、オプションが存在する場合は、それを選択します。これまでのところ、私はこれを行うことができました:

Chosen.prototype.add_text_as_option = function () {
    $('#id_select').append(
        $('<option>')
                .html(this.search_field.val())
                .attr('selected', 'selected')
                .attr('value', 0)
    );
    $('#id_select').trigger("liszt:updated");
    return false;
};

関数内で入力フィールドにフォーカスがあるときにユーザーが Enter キーを押すたびに、この関数を呼び出しkeydown_checkます。

2 つの問題があります。

  • 最優先事項として、ユーザーが Enter キーを押してオプションの部分文字列を入力すると、オプションは選択されませんが、部分文字列のテキストが追加されて選択されます。私が欲しいものではありません。

例: オプション "foo" があり、"fo" と入力し始めると、選択すると最初のオプションが候補 ("foo") としてマークされるため、Enter キーを押すと、それが選択されるはずですが、代わりに、次のようになります。本当は「foo」を選択したかったところ、「fo」がオプションとして追加されて選択されました。

クリックで「foo」を選択すると、すべて正常に動作します。オプション選択マークが選択され、部分文字列テキストがオプションの一部として取得されます。

元の機能をすべて失うことなく、存在しないオプションを選択済みに追加するにはどうすればよいですか?

  • 選択したプラグイン内で選択して初期化した複数選択フィールドにアクセスするにはどうすればよいですか? 上記のコードでわかるように、select multiple フィールドの ID はハードコーディングされています。ユーザーが新しいオプションを追加したときに選択を更新できるようにするために、これを行いたいと思います。

  • 私が探している機能は、linkedinのスキル ウィジェットに非常に似ています。

4

5 に答える 5

1

テキストを受け取り、オプションとして作成する、選択されたjqueryのjsfiddleを作成しました。以前のバージョンの jquery では、ファシリティ作成オプションが選択されていました。

create_option: true;
persistent_create_option: true;
skip_no_results: true;

次のコードを使用できます。

$('#id_select').chosen({
    width: '100%', 
    create_option: true, 
    persistent_create_option: true, 
    skip_no_results: true
});

jsfiddle リンク: https://jsfiddle.net/n4nrqtek/

于 2016-12-20T06:51:59.097 に答える
1

選択したプラグインに基づいた select2 プラグインを試す必要がありますが、要素を動的に追加するとうまく機能します。

リンクはこちら: http://ivaynberg.github.com/select2/

自動トークン化の例を見てください。それがあなたが探しているものかもしれません。

于 2013-03-28T19:55:01.573 に答える
-1

解決策を複数選択しました

var str_array = ['css','html'];
$("#id_select").val(str_array).trigger("chosen:updated");
于 2018-01-25T22:54:31.873 に答える