浏览代码

Autofocus search field in multiple select

In a single select, the search field is automatically focused when
the select is opened. This also applied to multiple selects, but
this was causing issues because the container was automatically
focused when the dropdown was closed.

This makes a change such that the search field is automatically
focused when the dropdown is closed.

This closes https://github.com/select2/select2/issues/2995.
Kevin Brown 10 年之前
父节点
当前提交
0c0e2527fa

+ 5 - 0
dist/js/select2.amd.full.js

@@ -1256,6 +1256,7 @@ define('select2/selection/search',[
       self.$search.attr('tabindex', -1);
       self.$search.attr('tabindex', -1);
 
 
       self.$search.val('');
       self.$search.val('');
+      self.$search.focus();
     });
     });
 
 
     container.on('enable', function () {
     container.on('enable', function () {
@@ -1269,6 +1270,10 @@ define('select2/selection/search',[
     this.$selection.on('keydown', '.select2-search--inline', function (evt) {
     this.$selection.on('keydown', '.select2-search--inline', function (evt) {
       evt.stopPropagation();
       evt.stopPropagation();
 
 
+      if (!container.isOpen()) {
+        self.trigger('open');
+      }
+
       self.trigger('keypress', evt);
       self.trigger('keypress', evt);
 
 
       self._keyUpPrevented = evt.isDefaultPrevented();
       self._keyUpPrevented = evt.isDefaultPrevented();

+ 5 - 0
dist/js/select2.amd.js

@@ -1256,6 +1256,7 @@ define('select2/selection/search',[
       self.$search.attr('tabindex', -1);
       self.$search.attr('tabindex', -1);
 
 
       self.$search.val('');
       self.$search.val('');
+      self.$search.focus();
     });
     });
 
 
     container.on('enable', function () {
     container.on('enable', function () {
@@ -1269,6 +1270,10 @@ define('select2/selection/search',[
     this.$selection.on('keydown', '.select2-search--inline', function (evt) {
     this.$selection.on('keydown', '.select2-search--inline', function (evt) {
       evt.stopPropagation();
       evt.stopPropagation();
 
 
+      if (!container.isOpen()) {
+        self.trigger('open');
+      }
+
       self.trigger('keypress', evt);
       self.trigger('keypress', evt);
 
 
       self._keyUpPrevented = evt.isDefaultPrevented();
       self._keyUpPrevented = evt.isDefaultPrevented();

+ 5 - 0
dist/js/select2.full.js

@@ -1694,6 +1694,7 @@ define('select2/selection/search',[
       self.$search.attr('tabindex', -1);
       self.$search.attr('tabindex', -1);
 
 
       self.$search.val('');
       self.$search.val('');
+      self.$search.focus();
     });
     });
 
 
     container.on('enable', function () {
     container.on('enable', function () {
@@ -1707,6 +1708,10 @@ define('select2/selection/search',[
     this.$selection.on('keydown', '.select2-search--inline', function (evt) {
     this.$selection.on('keydown', '.select2-search--inline', function (evt) {
       evt.stopPropagation();
       evt.stopPropagation();
 
 
+      if (!container.isOpen()) {
+        self.trigger('open');
+      }
+
       self.trigger('keypress', evt);
       self.trigger('keypress', evt);
 
 
       self._keyUpPrevented = evt.isDefaultPrevented();
       self._keyUpPrevented = evt.isDefaultPrevented();

文件差异内容过多而无法显示
+ 0 - 0
dist/js/select2.full.min.js


+ 5 - 0
dist/js/select2.js

@@ -1694,6 +1694,7 @@ define('select2/selection/search',[
       self.$search.attr('tabindex', -1);
       self.$search.attr('tabindex', -1);
 
 
       self.$search.val('');
       self.$search.val('');
+      self.$search.focus();
     });
     });
 
 
     container.on('enable', function () {
     container.on('enable', function () {
@@ -1707,6 +1708,10 @@ define('select2/selection/search',[
     this.$selection.on('keydown', '.select2-search--inline', function (evt) {
     this.$selection.on('keydown', '.select2-search--inline', function (evt) {
       evt.stopPropagation();
       evt.stopPropagation();
 
 
+      if (!container.isOpen()) {
+        self.trigger('open');
+      }
+
       self.trigger('keypress', evt);
       self.trigger('keypress', evt);
 
 
       self._keyUpPrevented = evt.isDefaultPrevented();
       self._keyUpPrevented = evt.isDefaultPrevented();

文件差异内容过多而无法显示
+ 0 - 0
dist/js/select2.min.js


+ 5 - 0
src/js/select2/selection/search.js

@@ -39,6 +39,7 @@ define([
       self.$search.attr('tabindex', -1);
       self.$search.attr('tabindex', -1);
 
 
       self.$search.val('');
       self.$search.val('');
+      self.$search.focus();
     });
     });
 
 
     container.on('enable', function () {
     container.on('enable', function () {
@@ -52,6 +53,10 @@ define([
     this.$selection.on('keydown', '.select2-search--inline', function (evt) {
     this.$selection.on('keydown', '.select2-search--inline', function (evt) {
       evt.stopPropagation();
       evt.stopPropagation();
 
 
+      if (!container.isOpen()) {
+        self.trigger('open');
+      }
+
       self.trigger('keypress', evt);
       self.trigger('keypress', evt);
 
 
       self._keyUpPrevented = evt.isDefaultPrevented();
       self._keyUpPrevented = evt.isDefaultPrevented();

部分文件因为文件数量过多而无法显示