根据选择选项改变jQuery UI滑块值
Change jQuery UI Slider Value Based on Select Option
我正在尝试设置票价计算器,它显示了基于选定位置的每张票的价格。
票价计算器的值基于select
表单中设置的value
属性。
我所有的代码工作,除了$('region').on('change')
的行动。我根本无法让计算器中的数据更新为新值。
小提琴: http://jsfiddle.net/2hmcf5wf/1/
$(function() {
// setting up region variables
switch ($('#region').val()) {
case '10':
var cost = 10,
time = 300;
break;
case '20':
var cost = 20,
time = 600;
break;
}
// slider
$('#slider').slider({
max: time,
min: cost,
step: cost,
value: cost,
slide: function(event, ui) {
update(cost, time, ui.value);
}
});
// set initial values
$('#ticket').html('1 ticket');
$('#price').html('$' + $('#slider').slider('value'));
// region change
$('#region').on('change', function() {
update();
});
});
function update(cost, time, value) {
$('#ticket').html((value / cost) + ' ticket');
$('#price').html('$' + value);
}
body {
text-align: center;
margin: 50px auto;
}
#region {
display: block;
margin: 10px auto;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<link href="https://ajax.googleapis.com/ajax/libs/jqueryui/1.11.4/themes/smoothness/jquery-ui.css" rel="stylesheet"/>
<script src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.11.4/jquery-ui.min.js"></script>
<select id="region">
<option value="10" >Los Angeles, CA</option>
<option value="20">New York, NY</option>
</select>
<div id="slider"></div>
<span id="ticket"></span>
<div id="slider"></div>
<div id="price"></div>
您的代码有几个问题,最直接的问题是您的更改侦听器中的update
调用没有传递适当的参数。把它从update();
改为update(cost, time, this.value)
,它应该可以工作了。
另外(假设预期的行为是使用在case/switch语句顶部计算的cost
和time
值)。在区域值更改时,您需要重新计算cost
和time
变量。另外,你会希望这个影响滑动条中的回调。我会这样做,以确保一切工作,基本上,只是使cost
和time
全局变量,并在update
函数调用之前更新它们。
var cost, time;
$(function() {
// setting up region variables
changeRegion($( '#region' ).val());
// slider
$( '#slider' ).slider({
max: time,
min: cost,
step: cost,
value: cost,
slide: function( event, ui ) {
update(ui.value);
}
});
// set initial values
$( '#ticket' ).html( '1 ticket' );
$( '#price' ).html( '$' + $( '#slider' ).slider( 'value' ) );
// region change
$( '#region' ).on( 'change', function() {
changeRegion(this.value);
update(this.value);
});
});
function changeRegion(value) {
switch ( value ) {
case '10':
cost = 10, time = 300;
break;
case '20':
cost = 20, time = 600;
break;
}
}
function update( value ) {
$( '#ticket' ).html( ( value / cost ) + ' ticket' );
$( '#price' ).html( '$' + value );
}
编辑:此外,您还需要刷新滑块以更新时间和成本变量中反映的变化。参见如何刷新一个jQuery UI滑块设置最小或最大值后?作为一个例子,为了让滑动条反映这些更改,您需要调用如下代码:
sliderObject.slider("option", "min", cost);
sliderObject.slider("option", "step", cost);
sliderObject.slider("option", "max", time);
sliderObject.slider("value", cost);
参数中没有数据,因为您根本没有传递它们。只需将update()
更改为update(cost, time, $('#slider').slider('value'));
相关文章:
- jQuery UI自动完成突然停止工作
- Rails/JSON:如何将JSON用于jquery UI自动完成表单
- 停止jQuery UI滑块移动超过给定值
- Jquery UI自动完成无法工作
- jquery ui滑块上的滑块值
- jQuery UI可排序-多连接列表拖动
- 使用Jquery ui时滑块无法工作
- JQuery UI可拖动潜水与滚动棒到鼠标
- jQuery UI自动完成-修改问题
- JQuery UI日期选择器:在选择出发日期时自动弹出返回日期
- 阻止选项卡缓存jquery ui
- 将jQuery UI Timepicker Addon与React一起使用
- 如何在页面重新加载时显示jquery ui对话框
- jquery ui自动完成导致标头错误
- jquery UI draggable:UI.children不是一个函数
- 在JQuery UI Accordion Sortable中使用touchpunch无法正确使用touch
- Jquery UI对话框不会消失
- 无限循环onsen UI + jquery
- Ignite UI - (jQuery) - 无法使用 ig.excel.WorksheetCellComment 在单
- 可排序的UI jquery的奇怪行为