(⌐■_■)你好,我下面附加的代码实现了(i)3个JQuery UI Slider句柄,这意味着4个范围,(ii)范围值不冲突,(iii)范围着色,(iv)标题工具提示处理和 (v) 范围值的显示。请注意,我使用的是旧的 JQuery 版本。此外,它有一个模式,这意味着它很可能被重新编码以优雅地支持 >=4 句柄。
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Test Slider</title>
<link type="text/css" href="css/jquery-ui-1.7.2.custom.css" rel="stylesheet" />
<script src="js/jquery-1.3.2.min.js" type="text/javascript"></script>
<script src="js/jquery-ui-1.7.2.custom.min.js" type="text/javascript"></script>
</head>
<body>
<style>
div.demo { padding: 10px !important; };
</style>
<div class="demo">
<p>
<label>% Style:</label>
<input type="text" id="weightage_style" style="border:0; color:#f6931f; font-weight:bold;" />
<br />
<label>% Design:</label>
<input type="text" id="weightage_design" style="border:0; color:#f6931f; font-weight:bold;" />
<br />
<label>% Correctness:</label>
<input type="text" id="weightage_correctness" style="border:0; color:#f6931f; font-weight:bold;" />
<br />
<label>% Others:</label>
<input type="text" id="weightage_others" style="border:0; color:#f6931f; font-weight:bold;" />
<br />
</p>
<div id="weightage_slider" style="font-size:12px;width:300px;"></div>
</div>
<script>
$( "#weightage_slider" ).slider({
min: 0,
max: 100,
orientation: "horizontal",
step: 1,
values: [ 10, 40, 90 ], // set three handles
slide: function( event, ui ) {
// NOTE: during slide, the following sequence occurs: (i) change ui.value (ii) call this function (iii) move the slider handle
// these four lines update the display of handle ranges
$( "#weightage_style" ).val( "0" + " - " + $( "#weightage_slider" ).slider('values', 0) );
$( "#weightage_design" ).val( $( "#weightage_slider" ).slider('values', 0) + " - " + $( "#weightage_slider" ).slider('values', 1) );
$( "#weightage_correctness" ).val( $( "#weightage_slider" ).slider('values', 1) + " - " + $( "#weightage_slider" ).slider('values', 2) );
$( "#weightage_others" ).val( $( "#weightage_slider" ).slider('values', 2) + " - " + "100" );
if ( ui.handle == $( "#weightage_slider_0" ).get(0) ) {
if(ui.values[ 0 ] >= ui.values[ 1 ]){
$( "#weightage_slider" ).slider('values', 0, ui.values[ 1 ]); // triggers change event
return false;
} else {
// handle-0 will move
// update display of colored handle ranges
$( "#weightage_slider_a" ).css('left', '0%');
$( "#weightage_slider_a" ).css('width', (ui.values[ 0 ] + '%'));
$( "#weightage_slider_b" ).css('left', (ui.values[ 0 ] + '%'));
$( "#weightage_slider_b" ).css('width', ((ui.values[1] - ui.values[0]) + '%'));
}
}
if ( ui.handle == $( "#weightage_slider_1" ).get(0) ) {
if(ui.values[ 1 ] <= ui.values[ 0 ]){
$( "#weightage_slider" ).slider('values', 1, ui.values[ 0 ]); // triggers change event
return false;
}else if(ui.values[ 1 ] >= ui.values[ 2 ]){
$( "#weightage_slider" ).slider('values', 1, ui.values[ 2 ]); // triggers change event
return false;
}else{
// handle-1 will move
// update display of colored handle ranges
$( "#weightage_slider_b" ).css('left', (ui.values[ 0 ] + '%'));
$( "#weightage_slider_b" ).css('width', ((ui.values[1] - ui.values[0]) + '%'));
$( "#weightage_slider_c" ).css('left', (ui.values[ 1 ] + '%'));
$( "#weightage_slider_c" ).css('width', ((ui.values[2] - ui.values[1]) + '%'));
}
}
if ( ui.handle == $( "#weightage_slider_2" ).get(0) ) {
if(ui.values[ 2 ] <= ui.values[ 1 ]){
$( "#weightage_slider" ).slider('values', 2, ui.values[ 1 ]); // triggers change event
return false;
} else{
// handle-2 will move
// update display of colored handle ranges
$( "#weightage_slider_c" ).css('left', (ui.values[ 1 ] + '%'));
$( "#weightage_slider_c" ).css('width', ((ui.values[2] - ui.values[1]) + '%'));
$( "#weightage_slider_d" ).css('left', (ui.values[ 2 ] + '%'));
$( "#weightage_slider_d" ).css('width', ((100 - ui.values[2]) + '%'));
}
}
},
change: function( event, ui ) {
// because slide event has function that changes handles' value programmatically, the following is necessary
// these four lines update the display of handle ranges
$( "#weightage_style" ).val( "0" + " - " + $( "#weightage_slider" ).slider('values', 0) );
$( "#weightage_design" ).val( $( "#weightage_slider" ).slider('values', 0) + " - " + $( "#weightage_slider" ).slider('values', 1) );
$( "#weightage_correctness" ).val( $( "#weightage_slider" ).slider('values', 1) + " - " + $( "#weightage_slider" ).slider('values', 2) );
$( "#weightage_others" ).val( $( "#weightage_slider" ).slider('values', 2) + " - " + "100" );
// update display of colored handle ranges
$( "#weightage_slider_a" ).css('left', '0%');
$( "#weightage_slider_a" ).css('width', (ui.values[ 0 ] + '%'));
$( "#weightage_slider_b" ).css('left', (ui.values[ 0 ] + '%'));
$( "#weightage_slider_b" ).css('width', ((ui.values[1] - ui.values[0]) + '%'));
$( "#weightage_slider_c" ).css('left', (ui.values[ 1 ] + '%'));
$( "#weightage_slider_c" ).css('width', ((ui.values[2] - ui.values[1]) + '%'));
$( "#weightage_slider_d" ).css('left', (ui.values[ 2 ] + '%'));
$( "#weightage_slider_d" ).css('width', ((100 - ui.values[2]) + '%'));
}
});
// label each slider handle
$( "#weightage_slider > a" ).each(function(index){
$(this).attr('id', 'weightage_slider_' + index);
$(this).attr('title', 'slider handle ' + index);
});
// the following four div tags result in the display of colored handle ranges
// the following left attributes and width attributes should be consistent with slider initialization - values array
$('#weightage_slider').append("<div id='weightage_slider_a' class='ui-slider-range' style='left:0%;width:10%;background-color:#41d862;'></div>");
$('#weightage_slider').append("<div id='weightage_slider_b' class='ui-slider-range' style='left:10%;width:30%;background-color:#41b7d8;'></div>");
$('#weightage_slider').append("<div id='weightage_slider_c' class='ui-slider-range' style='left:40%;width:50%;background-color:#d841b7;'></div>");
$('#weightage_slider').append("<div id='weightage_slider_d' class='ui-slider-range' style='left:90%;width:10%;background-color:#d86241;'></div>");
// these four lines display the initial handle ranges
$( "#weightage_style" ).val( "0" + " - " + $( "#weightage_slider" ).slider('values', 0) );
$( "#weightage_design" ).val( $( "#weightage_slider" ).slider('values', 0) + " - " + $( "#weightage_slider" ).slider('values', 1) );
$( "#weightage_correctness" ).val( $( "#weightage_slider" ).slider('values', 1) + " - " + $( "#weightage_slider" ).slider('values', 2) );
$( "#weightage_others" ).val( $( "#weightage_slider" ).slider('values', 2) + " - " + "100" );
</script>
</body>
错误:如果手柄被拖到最左边,它们会“卡住”,因此您可能需要一个重置按钮来恢复手柄的位置。