Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Backbone.js 单击并更改事件不适用于jquery-select2选项_Backbone.js_Coffeescript_Onchange_Jquery Select2 - Fatal编程技术网

Backbone.js 单击并更改事件不适用于jquery-select2选项

Backbone.js 单击并更改事件不适用于jquery-select2选项,backbone.js,coffeescript,onchange,jquery-select2,Backbone.js,Coffeescript,Onchange,Jquery Select2,我正在使用jquery-select2库实现我的下拉列表 在我的例子中,我希望能够在用户单击下拉列表中的选项后触发操作。但是,单击或更改事件似乎不起作用 haml文件: %select.medium.name_selector.pull_left %option.placeholder{value:"placeholder", disabled: "disabled", selected: "selected"} Start or find a conversation with a mus

我正在使用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"
咖啡脚本文件:

%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下拉框的选项,是否仍有触发操作的方法


注意:我尝试了单击事件和更改事件,但它们都不适用于select2。您不能像使用普通的
小部件那样使用普通的
更改
事件,但实际上您需要将
displayChatScreen
方法附加到

e、 g

假设这是select2小部件的选择器,并且您正在适当的上下文中运行它

当您使用主干网提供的默认
events
hash时,实际上是这样做的:

$el.on('change', 'option', this.displayChatScreen);
由于select2实际上将
(因此
标记替换为
  • 对),因此您永远不会真正收到浏览器事件


    此外,
    change
    事件在父
    而不是
    元素上触发。

    使用select2时,您不能像在普通
    小部件中那样使用普通
    更改
    事件,但实际上需要将
    显示聊天屏幕
    方法附加到

    e、 g

    假设这是select2小部件的选择器,并且您正在适当的上下文中运行它

    当您使用主干网提供的默认
    events
    hash时,实际上是这样做的:

    $el.on('change', 'option', this.displayChatScreen);
    
    由于select2实际上将
    (因此
    标记替换为
  • 对),因此您永远不会真正收到浏览器事件


    此外,
    change
    事件在父
    而不是
    元素上触发。

    初始化时,您可以通过不呈现选项而将其作为选项传递给select2来避免所有问题

    您可以制作如下所示的输入标记:

    <input name="someName" value="selectedValues">
    
    
    
    然后使用如下选项初始化select2: $('input[name=“SomeName”]”)。选择2(选项)


    这样做将允许您安全地侦听对输入的更改,就像您经常使用事件散列一样

    您可以通过不呈现选项,而是在初始化时将其作为选项传递给select2来避免所有问题

    您可以制作如下所示的输入标记:

    <input name="someName" value="selectedValues">
    
    
    
    然后使用如下选项初始化select2: $('input[name=“SomeName”]”)。选择2(选项)

    这样做将允许您安全地侦听对输入的更改,就像您经常使用事件散列一样