1

jquery-select2 ライブラリを使用してドロップダウンを実装しています。

私の場合、ユーザーがドロップダウン リストのオプションをクリックした後にアクションをトリガーできるようにしたいと考えています。ただし、クリックまたは変更イベントは機能していないようです

haml ファイル:

%select.medium.name_selector.pull_left
  %option.placeholder{value:"placeholder", disabled: "disabled", selected: "selected"} Start or find a conversation with a muser
  %option{value: "nick"} nick
  %option{value: "sam"} sam
  %option{value: "john} john

コーヒースクリプトファイル:

events:
  "click option" : "displayChatScreen"

displayChatScreen: (e) ->
  e.preventDefault()
  nickname = @$("select.name_selector option:selected").val()
  if nickname != "placeholder"
    Backbone.history.navigate "messages/#{nickname}",
      trigger: true
  else
    alert "You need to select a friend to chat"

select2ドロップダウンボックスのオプションを変更すると、アクションをトリガーする方法はありますか?

注:クリックイベントと変更イベントの両方を試しましたが、どちらも機能しません

4

2 に答える 2

4

changeselect2 では、通常のウィジェットのように通常のイベントを使用することはできません<select>が、実際にはselect2 によって提供されるハンドラーdisplayChatScreenにメソッドをアタッチする必要があります。change

例えば

$('select.medium.name_selector').on('change', this.displayChatScreen);

それがselect2ウィジェットのセレクターであり、適切なコンテキストでそれを実行していると仮定します。

Backbone が提供するデフォルトのeventsハッシュを使用すると、実際には次のようになります。

$el.on('change', 'option', this.displayChatScreen);

<select>select2 は実際にを (したがって<option>タグをペアに)置き換える<ul> <li>ため、ブラウザ イベントを実際に受け取ることはありません。

さらに、イベントは要素ではなくchange親で発生します。<select><option>

于 2012-10-09T14:31:45.267 に答える
0

オプションをレンダリングせず、代わりに初期化時に select2 にオプションとして渡すことで、問題をすべて回避できます。

次のような入力タグを作成できます。

<input name="someName" value="selectedValues">

次に、select2 を次のようなオプションで初期化します。 $('input[name="SomeName"]').select2(options);

これを行うと、イベント ハッシュを使用して定期的に行うのと同じように、入力への変更を安全にリッスンできます。

于 2015-01-30T16:40:39.373 に答える