我现在跟着以下人员:
我有两个滑块:一个有数量,另一个有契约期。 如果数量上升,每件价格下降。 如果合同期限增加,每件的价格会下降更多。
我现在有这个:http://jsfiddle.net/vBVkL/16/ 不知何故,当我使用批次时,我无法改变每件的价格。
qty = ui.value; //-> this works
qty = batches[ui.value - 1]; //-> this doesn't work
有人可以帮我解决这个问题吗? 谢谢!
答案 0 :(得分:1)
更改滑块处理程序中的以下行:
$("input").val(prices[contract][qty - 1]);
到
$("input").val(prices[contract][ui.value - 1]);
原始代码使用的是变量qty
,这是一个字符串。当你试图从中扣除1时,它会导致"不是数字"它不能用于索引batches
数组。
您的prices
数组也存在问题。它们只包含三个值,但您的滑块可以选择第四个,您需要在这些数组的末尾添加一个值:
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]);
尝试在Geen
数组中查找值contracts
并失败,因此该函数因错误而结束并且jQueryUI永远不会完成它的工作是更新滑块。直到你移动第二个滑块才能正确设置变量。
将contract
的初始值设置为"无"表示代码将正确执行,滑块将设置动画。
您还有一个错误,即在设置价格时更改“合同期间”滑块会忽略数量滑块的值。这一行:
$("input").val(prices[contract][ui.value - 1]);
in" slider2"事件处理程序应更改为:
$("input").val(prices[contract][$("#slider1").slider("value") - 1]);
查看the updated fiddle现在一切正常的地方。