Support IE11

Previously `let of` loop was used, which isn't supported in IE11.

It seems it just fails when there is some JS syntax error
(doesn't matter where exactly) and dataType: 'json' has no effect.

Closes #982
This commit is contained in:
Artur Beljajev 2018-10-27 16:18:29 +03:00
parent 8666f4f714
commit 02f9e99428
6 changed files with 35 additions and 8 deletions

View file

@ -8,6 +8,10 @@
#= require jquery-ui/datepicker #= require jquery-ui/datepicker
#= require select2 #= require select2
#= require jquery.doubleScroll #= require jquery.doubleScroll
# Load order does matter
#= require polyfills/node_list_for_each
#= require datepicker #= require datepicker
#= require spell_check #= require spell_check
#= require admin/application #= require admin/application

View file

@ -0,0 +1,11 @@
// Needed mainly for IE11
// https://developer.mozilla.org/en-US/docs/Web/API/NodeList/forEach
if (window.NodeList && !NodeList.prototype.forEach) {
NodeList.prototype.forEach = function (callback, thisArg) {
thisArg = thisArg || window;
for (var i = 0; i < this.length; i++) {
callback.call(thisArg, this[i], i, this);
}
};
}

View file

@ -4,5 +4,9 @@
#= require jquery-ui/datepicker #= require jquery-ui/datepicker
#= require select2 #= require select2
#= require datepicker #= require datepicker
# Load order does matter
#= require polyfills/node_list_for_each
#= require spell_check #= require spell_check
#= require shared/general #= require shared/general

View file

@ -6,6 +6,10 @@
#= require jquery-ui/datepicker #= require jquery-ui/datepicker
#= require select2 #= require select2
#= require datepicker #= require datepicker
# Load order does matter
#= require polyfills/node_list_for_each
#= require spell_check #= require spell_check
#= require popover #= require popover
#= require text_field_trimmer #= require text_field_trimmer

View file

@ -3,9 +3,11 @@
let selector = 'input[type=text], textarea'; let selector = 'input[type=text], textarea';
let textFields = document.querySelectorAll(selector); let textFields = document.querySelectorAll(selector);
for (let field of textFields) { textFields.forEach(
function (field, _currentIndex, _listObj) {
field.spellcheck = false; field.spellcheck = false;
} }
);
} }
disableSpellCheck(); disableSpellCheck();

View file

@ -2,13 +2,15 @@
function trimTextFields() { function trimTextFields() {
let selector = 'input[type=text], input[type=search], input[type=email], textarea'; let selector = 'input[type=text], input[type=search], input[type=email], textarea';
let textFields = document.querySelectorAll(selector); let textFields = document.querySelectorAll(selector);
let listener = function () { let changeListener = function () {
this.value = this.value.trim(); this.value = this.value.trim();
}; };
for (let field of textFields) { textFields.forEach(
field.addEventListener('change', listener); function (field, currentIndex, listObj) {
field.addEventListener('change', changeListener);
} }
);
} }
trimTextFields(); trimTextFields();