Функция изменения выбора jQuery selectmenu не работает на iPhone

Я использую функцию jquery selectmenu на своей веб-странице, и, похоже, она не работает должным образом в браузерах ios.

После того, как я выбираю свой пункт меню, меню исчезает, но мое изменение: функция вообще не срабатывает. Он просто снова скрывает меню.

Мой код следующий:

$('#adultMenu').selectmenu({
    change: function() {
        adultval = $(this).val() + ' Adults. ';
        var inputvalue = adultval + childval + youthval + infantval;  
        $('#personInput').val(inputvalue);
    }
});

Я думаю, что это довольно распространенная проблема на iOS, но я еще не нашел ответа после долгого чтения форумов.

Любая помощь будет здорово!


person djnetherton    schedule 04.11.2014    source источник
comment
он не работает должным образом - что это значит? Вы должны быть точными, иначе чем мы можем вам помочь?   -  person Andy    schedule 04.11.2014
comment
Привет, Энди, я обновил свой пост, чтобы он был немного более подробным. В основном, когда я выбираю свой вариант, он просто снова скрывает меню, а не запускает код в функции изменения. Я надеюсь это имеет смысл. Также стоит отметить, что я сталкиваюсь с этой проблемой только на IOS, а не на Android.   -  person djnetherton    schedule 04.11.2014
comment
Вы пытались поместить предупреждение в функцию изменения, чтобы знать, вызывается она или нет? Код внутри выглядит нормально, но его лучше исключить. Кроме того, вы пробовали разные браузеры и удаленную отладку через USB?   -  person Reinstate Monica Cellio    schedule 04.11.2014
comment
Да, я пробовал метод оповещения, и вообще ничего не срабатывает. Кажется, это проблема.   -  person djnetherton    schedule 04.11.2014
comment
Как насчет отладки и проверки других браузеров? Вам нужно сузить то, что на самом деле не так.   -  person Reinstate Monica Cellio    schedule 04.11.2014
comment
Я пробовал и сафари, и хром на iphone на нескольких версиях ОС. Я считаю, что это связано с тем, что собственный пользовательский интерфейс ios полностью останавливает событие изменения.   -  person djnetherton    schedule 04.11.2014
comment
Я не вижу параметра change в документации. Вы используете немобильную версию?   -  person blgt    schedule 04.11.2014


Ответы (2)


УВАЖАЕМЫЕ ЛЮДИ ИЗ БУДУЩЕГО! Вот что я выяснил на данный момент:
Отредактировано с новыми выводами:

После долгих экспериментов я нашел причину. Это происходит, когда вы устанавливаете значение меню выбора с чем-то, чего нет в меню. Следующее демонстрирует проблему:

var $fubar = $('.fubar');

$fubar.selectmenu({
    'change': function () {
        $fubar.val('Pancakes');
    }
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
<link href="https://code.jquery.com/ui/1.11.4/themes/smoothness/jquery-ui.css" rel="stylesheet"/>
<script src="https://code.jquery.com/ui/1.11.4/jquery-ui.min.js"></script>
<select class="fubar">
    <option>Cake</option>
    <option>Ice Cream</option>
</select>

person AaronAsAChimp    schedule 08.09.2015

Если вы используете библиотеку FastClick, это может быть проблемой. Мне пришлось отключить FastClick для выбора в соответствии с этим комментарием: https://github.com/ftlabs/fastclick/issues/268#issuecomment-65022184 . Для selectmenu я добавил еще одно условие, если:

if (targetElement.nodeName.toLowerCase() == 'select' || targetElement.hasClass('ui-menu-item')) {
    return false;
  }
person mihai1990    schedule 21.09.2015