selectToUISlider()によって作成されたスライダーを持つ標準<select>..</select>
要素があります。問題は、スライダーを動かしてもドロップダウンのオプションが変更されないことです。さらにselected="selected"
、スライダーが移動すると各要素に設定されるため、フォームが送信されると、複数の選択オプションをエミュレートして複数の値がPOSTされます。
私はこれの底に到達しようと何年も費やしてきましたが、運がありません。誰かアイデアはありますか?
selectToUISlider()によって作成されたスライダーを持つ標準<select>..</select>
要素があります。問題は、スライダーを動かしてもドロップダウンのオプションが変更されないことです。さらにselected="selected"
、スライダーが移動すると各要素に設定されるため、フォームが送信されると、複数の選択オプションをエミュレートして複数の値がPOSTされます。
私はこれの底に到達しようと何年も費やしてきましたが、運がありません。誰かアイデアはありますか?
あなたが言ったのと同じような機能を達成しようとしたときに、私は同じ問題に遭遇しました。
問題は、スライダーを動かすたびに、以前に選択した項目をクリアせずに、選択リストの「選択済み」属性を設定し続けることです。新しいオプション項目を選択済みとして設定する前に、以前に選択したオプション項目をクリアするスクリプトを追加しました。
jqueryスクリプトファイルの行番号92(.. ish)のテキストを検索/検索します。
//control original select menu
var currSelect = jQuery('#' + thisHandle.attr('id').split('handle_')[1]);
currSelect.find('option').eq(ui.value).attr('selected', 'selected');
このコードを2行の間に挿入します。
currSelect.find('option[selected]').removeAttr('selected');
したがって、最終的なコードは次のようになります...
//control original select menu
var currSelect = jQuery('#' + thisHandle.attr('id').split('handle_')[1]);
currSelect.find('option[selected]').removeAttr('selected');
currSelect.find('option').eq(ui.value).attr('selected', 'selected');
お役に立てば幸いです。ご不明な点がございましたら、お気軽にお問い合わせください。
私はこれがかなり古いことを知っていますが、私は最近これに苦労しました、そして多分私の解決策は誰かを助けます。より新しいバージョンのjQuery(> jQuery 1.6.1)とJQueryUIを使用し、それらでselectToUISliderを使用しようとしたときに、これと同じ問題が発生しました。
98行目のselectToUISlider.jsスクリプトで、(属性の代わりにプロパティを使用して)解決策を見つけました。
これ
currSelect.find('option').eq(ui.value).attr('selected', 'selected');
このため
currSelect.find('option').eq(ui.value).prop('selected', true);
あなたはこの答えで「理由」を見つけることができます、それは私がこの解決策を見つけるのを助けました: https ://stackoverflow.com/a/5876747/2285806
また、prop()のjQuery APIエントリを読んで、詳細情報を見つけたり、ブラウザの下位互換性に関する重要な注意事項を読んだりすることもできます:http: //api.jquery.com/prop/