From cd7c4d3d73fd7f7e73687a5879dcb829a900af5e Mon Sep 17 00:00:00 2001 From: Kaspars Date: Thu, 13 Jul 2017 22:41:18 +0300 Subject: [PATCH] implement polling as a backup solution to catch changes by browser autofill (autofill does not dispatch change event) --- app/assets/javascripts/subdivision_select.js | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/app/assets/javascripts/subdivision_select.js b/app/assets/javascripts/subdivision_select.js index 501408f..2b49619 100644 --- a/app/assets/javascripts/subdivision_select.js +++ b/app/assets/javascripts/subdivision_select.js @@ -21,15 +21,26 @@ var SubdivisionSelect = (function() { var self = this; self._enabledInputsBeforeSubmit(); - $(this._countrySelect).change(function() { + self.country = this._countrySelect.val(); + setInterval(poll, 500); + this._countrySelect.change(onChange); + + function poll() { + if (self.country != self._countrySelect.val()) { + onChange(); + } + } + + function onChange() { + self.country = self._countrySelect.val(); $.ajax( { url: "/subdivisions", - data: { country_code: $(this).val() } - }).success(function(newSubdivisions) { + data: { country_code: self.country } + }).done(function(newSubdivisions) { self._clearSubdivisionSelect(); self._updateSubdivisionSelect(newSubdivisions); }); - }); + } }; SubdivisionSelect.prototype._updateSubdivisionSelect = function(newSubdivisions) {