是否可以禁用选择2的键输入开启(v 4.0.3)

时间:2016-07-19 13:34:24

标签: jquery-select2

是否可以禁用选择2(v 4.0.3)的键输入。我发现可以使用选项“openOnEnter:false”来完成,但它对我不起作用。

3 个答案:

答案 0 :(得分:0)

不幸的是,没有。至少在版本4.0.3时。
它是硬编码的:

this.on('keypress', function (evt) {
  var key = evt.which;

  if (self.isOpen()) {
    // skipped
  } else {
    if (key === KEYS.ENTER || key === KEYS.SPACE ||
        (key === KEYS.DOWN && evt.altKey)) {
      self.open();

      evt.preventDefault();
    }
  }
});

答案 1 :(得分:0)

在Enter键上打开下拉菜单的行为是硬编码的(如@Shrike所说),没有选项可以禁用它(openOnEnter在v3中已使用,但在v4中已删除)。

对于 Select2 v4 单选,我发现了以下( dirty )解决方案:

$(document).on('keydown', '.select2-selection', function (evt) {
    if (evt.which === 13) {
        $("#mySelect").select2('close');
    }
});

我捕获了keypress事件,并调用了select2 close方法以立即关闭下拉菜单。

在Chrome,Mozzila,Safari中进行了测试。

提琴:http://jsfiddle.net/j9t6sv8d/

答案 2 :(得分:0)

对于使用select2.full.min.js的任何人,您都可以搜索“ a.open”并将该部分代码替换为以下代码:

Uncaught TypeError: Illegal invocation
    at get-csv.js
    at commitHookEffectList (react-dom.development.js:17283)
    at commitPassiveHookEffects (react-dom.development.js:17307)
    at HTMLUnknownElement.callCallback (react-dom.development.js:149)
    at Object.invokeGuardedCallbackDev (react-dom.development.js:199)
    at invokeGuardedCallback (react-dom.development.js:256)
    at commitPassiveEffects (react-dom.development.js:18774)
    at wrapped (scheduler-tracing.development.js:207)
    at flushPassiveEffects (react-dom.development.js:18822)
    at dispatchAction (react-dom.development.js:13530)

这将检查select2元素是否被禁用,并阻止进一步的操作。