2017-09-05 9 views
0

タイトルには、選択ボックスに関する問題があり、iOS Safariで変更イベントを発生させています。 私は次のコードを持っている:iOSで毎回jQueryの選択変更が発生する

$thisPage.find('select#id-attribute').on('change', function (e) { 
    var theId = $(this).val(); 

    $thisPage.find('.place-where-options-get-populated').empty(); 

    if (theId != '') { 
     $.ajax({'type': 'GET', 'url': '/the-actual-url'+ theId, 'dataType': 'json'}) 
      .done(showTemplate) 
      .fail(function(jqXHR, textStatus, errorThrown) { 

      }) 
    } else { 
     showTemplate({}); 
    } 

}).trigger('change'); 

上記のコードは、iOSの上のオプションのみ毎秒時間を変更するのに対し-the出力オプションは、各変更event-に応じて変更するデスクトップブラウザ上で正常に動作しますが(最初の変更に取り組んでいます2番目にはない、3番目には、4番目にはない、など)。 私は使用していますjQuery v3.2.1

正しい方向のガイドは高く評価されます。

編集: showTemplate()関数は、基本的に私は、サーバーにやってるの要求であり、それは以下の(私の問題に関係している部分)に終了します。

$thisPage.find('.place-where-options-get-populated').html(theItems); 

今、 'theItems'でconsole.logを実行すると、これは常に返すべきものを返します。さらに、コンテンツは実際には適切なコンテナに追加され、ページに表示されません。

+0

ajaxリクエストのshowTemplateは何をするのですか –

+1

有用なリンクhttps://stackoverflow.com/questions/5960731/strange-behavior-of-select-dropdowns-onchange-js-event-when-using-next- on-m – PraveenKumar

+0

@lgkarolos - 私の投稿の編集セクションをご覧ください。 – Seb

答えて

0

さて、showTemplate()関数の最後のビットにhide()とshow()を追加してこの問題を解決しました。したがって、次のようになります。

$thisPage.find('.place-where-options-get-populated').hide().html(theItems).show(); 

基本的には、問題はhtml()関数にあります。

理想的な解決策ではないかもしれませんが、それはうまくいくでしょう。

関連する問題