为什么不能正确选择2个事件?

时间:2015-04-03 17:41:48

标签: jquery-select2

鉴于以下coffeescript

class ModalController
  constructor: (modalClass) ->
    @modalClass = modalClass
    @enableSelect2()
    @clearSelectOptions()

  enableSelect2: () ->
    $('.select2-init').select2()
      .on 'select2-open', (e) ->
        console.log e
      .on 'select2:selecting', (e) =>
        console.log 'added'
        @validatePresenceOf($(e.target))

我希望当我选择上面的代码时,特别是调用.on 'select2:selecting的行应该触发,这不是下面代码片段中记录的情况。

https://cl.ly/image/2P3d3F0y3k1o/Screen%20Recording%202015-04-03%20at%2010.38%20AM.gif

我的理解基于select2 docs

https://cl.ly/image/2Z3k0q2b2H1V/Image%202015-04-03%20at%2010.40.37%20AM.png

如何解决这个问题?

在事件选择中可能出现错误,

以下coffeescript

  enableSelect2: () ->
    $('.select2-init').select2()
      .on 'change', (event) =>
        if event.added
          @validatePresenceOf($(event.target))
      .on 'select2:selecting', (e) =>
        console.log "selecting"
      .on 'select2:select', (e) =>
        console.log "select"
      .on 'select2-removed', (e) =>
        @validatePresenceOf($(e.target))

产生以下内容,请注意没有日志声明(虽然我已经通过使用event.added检查攻击了我正在寻找的验证。

https://cl.ly/image/1l3Y3h1a1e2t/Image%202015-04-03%20at%2011.05.41%20AM.png

模式select2:eventname没有做任何事情,即没有记录,没有钩子。这很奇怪。我在互联网上找到的随机网站上找到了select2-eventname模式。这对我来说是非常奇怪和令人不安的,这看起来像是一个简单的代码。

2 个答案:

答案 0 :(得分:6)

出现以使用Select2 3.x,但您正在引用Select2 4.0.0文档中的内容。

Select2 4.0.0文档:https://select2.github.io/
选择2 3.5.2文档:http://select2.github.io/select2/

主页上还有一个链接到Select2 3.5.2文档的链接。


您使用的select2-open似乎正在运行且是3.5.2事件,但您也尝试使用select2:selecting,这是一个4.0.0事件。 select2:selecting的Select2 3.5.2事件为select2-selecting(请注意-而不是:。)

查看事件文档时的其他显着变化

  • change曾用于包含addedremoved属性,用于检查添加和删除内容的时间。现在,您应该使用select2:select事件来检查添加内容的时间,并使用select2:unselect来查看删除内容的时间。
  • select2-selecting现在是select2:selecting
  • select2-removing现在是select2:unselecting
  • select2-removed现在是select2:unselect
  • select2-opening现在是select2:opening
  • select2-open现在是select2:open

答案 1 :(得分:0)

可能的拼写错误。应该是

.on'select2-selecting'...

而不是

.on'slect2:选择'...