Высота iScroll4 неверна после отправки формы ajax. Высота - это оригинальная высота перед отправкой формы

Я встроил форму в свой скроллер iScroll4. Форма представляет собой форму AJAX, созданную плагином Gravity для WordPress.

Когда я нажимаю кнопку Отправить в форме, высота iscroll (генерируемая при загрузке страницы) остается неизменной, а это означает, что если форма больше после нажатия кнопки отправки, вы не можете прокрутить весь путь вниз.

Смотрите мой код ниже...

var myScroll,
    myScrollSidebar;

function loaded() {
    myScroll            = new iScroll('wrapper');
    myScrollSidebar     = new iScroll('sidebar-wrapper');
}

var formInputs = [
  document.getElementById('gform_submit_button_1'),
  document.getElementById('input_1_1'),
  document.getElementById('input_1_2'),
  document.getElementById('input_1_3'),
  document.getElementById('input_1_4'),
  document.getElementById('input_input_1_5')
];

for(var i = 0; i < formInputs.length; i++) {
  formInputs[i].addEventListener('touchstart' /*'mousedown'*/, function(e) {
    e.stopPropagation();
  }, false);
}

jQuery(document).bind('gform_page_loaded', function(){

    var formInputs = [
      document.getElementById('gform_submit_button_1'),
      document.getElementById('input_1_1'),
      document.getElementById('input_1_2'),
      document.getElementById('input_1_3'),
      document.getElementById('input_1_4'),
      document.getElementById('input_input_1_5')
    ];

    for(var i = 0; i < formInputs.length; i++) {
      formInputs[i].addEventListener('touchstart' /*'mousedown'*/, function(e) {
        e.stopPropagation();
      }, false);
    }

});

document.addEventListener('touchmove', function (e) { e.preventDefault(); }, false);
document.addEventListener('DOMContentLoaded', function () { setTimeout(loaded, 200); }, false);



Может кто-нибудь, пожалуйста, помогите мне исправить это так, когда форма отправляет, высота iScroll обновляется возможно?

Связанный jquery - это то, что входные данные формы работают после отправки формы. Это потому, что iscroll4 борется с элементами формы.

Заранее спасибо.

мистифицировать

1 ответ

Вам нужно заставить iScroll вычислять новую высоту с помощью myScroll.refresh() (ПОСЛЕ вашего AJAX).

Это со страницы разработчика ( http://cubiq.org/iscroll-4):

iScroll должен знать правильные размеры как оболочки, так и скроллера. Они вычисляются при первом запуске, но если ваш код меняет размер элементов, iScroll должен быть предупрежден о том, что вы работаете с DOM.

Это достигается путем вызова функции обновления с правильной синхронизацией. Пожалуйста, следуйте за мной внимательно, понимание этого избавит вас от многих часов разочарования.

Каждый раз, когда вы изменяете элементы высоту / ширину или изменяете html-структуру любым способом (например, appendChild или innerHTML), средство визуализации браузера обновляет страницу. После того, как браузер применил изменения, вы снова можете получить доступ к новому DOM (и свойствам) из javascript. Иногда этот процесс не мгновенный.

Другие вопросы по тегам