10

Select2 を使用して、アプリケーションで Gmail スタイルの電子メール アドレス フィールドを作成しています。ユーザーが電子メール アドレスを入力し、その後にスペースやカンマを入れず、Enter キーや Tab キーを押さないという 1 つのケースを除いて、これはうまく機能します。たとえば、電子メール アドレスを入力した後、マウスを使用してフォームの次のフィールドを選択すると、入力した電子メール アドレスは消えてしまいます。

問題を説明するjsfiddle hereの例があります。

非表示の入力でselect2を設定する方法は次のとおりです。

$(function(){
    $('input').select2({
        tags: [],
        width: "300px",
        dropdownCss: {display: 'none'},
        tokenSeparators: [',', ', ', ' ']
    });
});

select2 を設定して、onBlur が残っているものをすべて取得し、現在タグではなく、1 つにする方法はありますか?

4

4 に答える 4

19

これは、「selectOnBlur」オプションを使用して、select2ライブラリのバージョン3.3でサポートされるようになりました。

于 2013-02-08T16:22:36.833 に答える
3

select2(タグモード)と送信ボタンのあるフォームがありました。デフォルトでは、ドロップダウンからタグを選択したり、トリガー コントロール キーのいずれかを押したりせずにユーザーがタグを入力すると、プラグインがブラー イベントで生成された入力 DOM オブジェクトを閉じるため、ユーザー エントリが失われます。

この問題に対する私の簡単な修正は、プラグインのぼかし機能をハックし、次の行を追加することでした:

var val=this.search.val();
if($.trim(val)!='') this.onSelect({id:val,text:val});

ぼかし関数が呼び出されると、上記のコードはユーザーが入力したかどうかを確認します。ある場合は、選択イベントをトリガーし、必要なオブジェクトを送信します。私が渡しているオブジェクトは、タギング モードの select2 にのみ適しています。select2 v3.2 を使用する場合、この行を 1311 行目の AbstractSelect2 のぼかし関数の開始時に挿入できます。必要に応じてウィジェット。

于 2012-12-19T03:09:55.717 に答える
1

メールについて話しているので、ここで何をしようとしているのかよくわかりません。

jQuery(element.val().split(",")).each(function () {
                data.push({id: this, text: this});
            });

しかし、代わりにこれを試すことができます:

var splitted = element.val().split(",");
for(var i=0,z=splitted.length;i<z;i++)
    data.push({id: splitted[i], text: splitted[i]});

ところで、あなたの jsfiddle は未完成です。

于 2012-12-11T12:57:27.083 に答える