選択した複数選択入力のテキストフィールドにユーザーが入力したテキストをオプションとして追加し、それを自動的に選択したいのですが、オプションが存在しない場合はすべて、オプションが存在する場合は、それを選択します。これまでのところ、私はこれを行うことができました:
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のスキル ウィジェットに非常に似ています。