Jquery изменение загрузки страницы не работает на мобильном телефоне - PullRequest
0 голосов
/ 30 апреля 2020

У меня странная проблема. Я пытаюсь изменить выбранный параметр при загрузке страницы. Это работает на рабочем столе, но не на мобильном телефоне.

<select id="gui-form-details-type" name="customer[type]">
  <option value="private" selected="selected">Option1</option>
  <option value="company">Option2</option>
</select>

Я попробовал что-то вроде:

$(function(){

 $('body').live('change','#gui-form-details-type', function() {
   $("#gui-form-details-type").find('option[value=private]').removeAttr("selected");
   $("#gui-form-details-type").find('option[value=company]').attr('selected','selected');
 }).change();

 // and
 $("#gui-form-details-type").on('change', function(){
   .....
 }).change();

 // and        
 $(document).on('change', '#gui-form-details-type', function(){
  ....
 }).change()

});

Я даже обернул его в функцию, которая запускалась при загрузке страницы. Есть ли какая-то конкретная причина, почему это не работает на iOS или Android?

Любая помощь с благодарностью!

1 Ответ

1 голос
/ 30 апреля 2020

Это будет мое предлагаемое исправление.

function alterGuiFormDetailsType() {
  const $element = $('#gui-form-details-type');

  if ($element.length) {
    $element.find('option[value="private"]').removeAttr('selected');
    $element.find('option[value="company"]').attr('selected', 'selected');
  }
}

$(document.body).on('change', '#gui-form-details-type', alterGuiFormDetailsType);

alterGuiFormDetailsType();

Извлеките логический код c из обработчика событий и вызовите его непосредственно при загрузке страницы. Если элемент еще не существует, он попытается выполнить, но ничего не сделает.

...