Only disable keyboard focusing for touch devices [Fixes #1541]
This fixes the issue [1] by first checking to see if the current
device is a touch device. The other issue [2] that occured because
of the original fix [3] is now fixed, because the hidden inputs
are always focused by default on non-touch devices.
The code used for detecting touch devices was pulled from
StackOverflow [4]. Information on the reasoning behind this fix
can be found on GitHub [5].
[1]: https://github.com/ivaynberg/select2/issues/1541
[2]: https://github.com/ivaynberg/select2/issues/2223
[3]: d87e93dd45
[4]: http://stackoverflow.com/a/15439809/359284
[5]: https://github.com/ivaynberg/select2/issues/1541#issuecomment-39805859
This commit is contained in:
parent
79e031fbdf
commit
2e79f5eb4f
@ -3384,6 +3384,15 @@ the specific language governing permissions and limitations under the Apache Lic
|
|||||||
searchInputPlaceholder: '',
|
searchInputPlaceholder: '',
|
||||||
createSearchChoicePosition: 'top',
|
createSearchChoicePosition: 'top',
|
||||||
shouldFocusInput: function (instance) {
|
shouldFocusInput: function (instance) {
|
||||||
|
// Attempt to detect touch devices
|
||||||
|
var supportsTouchEvents = (('ontouchstart' in window) ||
|
||||||
|
(navigator.msMaxTouchPoints > 0));
|
||||||
|
|
||||||
|
// Only devices which support touch events should be special cased
|
||||||
|
if (!supportsTouchEvents) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
// Never focus the input if search is disabled
|
// Never focus the input if search is disabled
|
||||||
if (instance.opts.minimumResultsForSearch < 0) {
|
if (instance.opts.minimumResultsForSearch < 0) {
|
||||||
return false;
|
return false;
|
||||||
|
Loading…
Reference in New Issue
Block a user