2012-12-11 12 views
9

私はアプリケーションでGmailスタイルの電子メールアドレスフィールドを作成するためにSelect2を使用しています。それは1つの場合を除いて素晴らしいです:ユーザーが電子メールアドレスを入力し、その後にスペースやコンマを入れず、入力やタブに当たらない場合。たとえば、電子メールアドレスを入力してマウスを使用してフォームの次のフィールドを選択すると、入力した電子メールアドレスはなくなります。jQuery Select2 Tag on Blur

私はこの問題を示す例jsfiddle hereを持っています。

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

それだけ残っているものは何でも取り、現在はタグではなく、onBlurイベントとなるよう、私はSELECT2を設定するための方法はあります:私は私の隠された入力にSELECT2を設定していどのようにここで

ですそれを1つにする?

私は本当にあなたが電子メールについて話しているので、あなたがここでやろうとしているものを理解していけない

答えて

17

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

+2

あなたは例を示してください。 –

+0

これはSelect2 4.0.1-rc.1ではうまくいかないようです: '$ .fn.select2.defaults.set(" selectOnBlur "、" true ");' – EriF89

+0

このオプションの名前は 'selectOnClose'に変更されました – kartikluke

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があります不完全

+0

私はそれらの設定を手元の問題に関連していないので、これらの設定を削除しました。また、上記のフィドルとコードを更新しました。 – davertron

3

私はselect2(タグモード)と送信ボタンを持つフォームを持っていました。デフォルトでは、ユーザーがタグを入力したときに、ドロップダウンからタグを選択せず​​に、またはトリガー制御キーの1つを押すことなく、プラグインが生成された入力DOMオブジェクトをブラーイベントで閉じるため、ユーザーエントリは失われます。ユーザエントリ場合はボケ関数が呼び出されると

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

、上記のコードをチェックします。この問題へ

私のクイックフィックスは、プラグインのぼかし機能をハックすると、次の行を追加することでした。もしあれば、それはselectイベントをトリガし、必要なオブジェクトを送信します。私が渡しているオブジェクトは、タグ付けモードではselect2にのみ適しています。select2 v3.2を使用する場合、この行は1311行目のAbstractSelect2のぼかし関数の先頭に挿入できます。あなたの必要に応じてウィジェット。

+1

この機能を利用するためにライブラリを自分で修正する必要はありませんが、これまでのところ唯一の答えです。私が行ったもう一つの変更は、 "noFocus:true"を "onSelect"メソッドに渡してから、 "focusSearch"を呼び出さずにそのチェックを行い、テキストを入力するのは面倒なので、別のテキストフィールド古いselect2ボックスにもう一度集中してください。 – davertron

+0

@Raminと@davertronに感謝します!何らかの理由で、私はselect2の最後のバージョンを使用できません(外部のクリックは何も閉じません)ので、私はv3.2に戻り、皆さんの2つのハックを作ります。私はミニ版にしかアクセスしていないので、かなり厄介でした。とにかく、ここでは、ハックの最終要点、他の人のため:https://gist.github.com/hartator/6689203 – Hartator

1

$('select').select2({ 
    selectOnClose: true 
}); 

これは選択をキャプチャし、ユーザーが他の場所でクリックすると、タグを作成します。