スライダー ハンドラーで次の行を変更します。
$("input").val(prices[contract][qty - 1]);
に
$("input").val(prices[contract][ui.value - 1]);
元のコードは、文字列である変数qty
を使用しています。batches
そこから 1 を差し引こうとすると、配列のインデックスに使用できない「数値ではない」という結果になります。
prices
配列にも問題があります。これらには 3 つの値しか含まれていませんが、スライダーで 4 番目を選択できます。これらの配列の最後に値を追加する必要があります。
var prices = {
'none': [10, 9, 8, ?],
'12 months': [9, 8, 7, ?],
'24 months': [8, 7, 6, ?],
'36 months': [7, 6, 5, ?],
};
更新されたフィドル
よくわからないのは、ページが最初に読み込まれたときにスライダーが正しくアニメーション化されない理由です。
編集:
ページの読み込み時にスライダーが機能しなかった理由は、変数の初期化に使用される値が原因です。
var contract = 'Geen'
スライダーが移動すると、コードは配列内$("input").val(prices[contract][qty - 1]);
の値を検索しようとして失敗したため、エラーのために関数が終了し、jQueryUI はスライダーを更新する作業を終了しません。2 番目のスライダーを動かして初めて、変数が正しく設定されます。Geen
contracts
の初期値contract
を「なし」に設定すると、コードが正しく実行され、スライダーがアニメーション化されます。
また、契約期間スライダーを変更すると、価格を設定するときに数量スライダーの値が無視されるというバグもありました。この線:
$("input").val(prices[contract][ui.value - 1]);
「slider2」のイベント ハンドラを次のように変更する必要があります。
$("input").val(prices[contract][$("#slider1").slider("value") - 1]);
すべてが機能する更新されたフィドルを見てください。