我在我的網站上有最小 - 最大價格範圍的範圍滑塊。滑塊兩側有兩個文本輸入框。我用滑塊創建了一個回調函數,該函數根據滑塊內的val變化來調整文本框的值。與相關文本輸入事件(失敗)的Jquery UI範圍滑塊
同時,我還想根據對文本框的閾值的更改來調整滑塊的值。現在,我在文本輸入上綁定的更改(也是嘗試過的按鍵)事件不會改變兩個範圍滑塊指針的值(位置)。這裏有什麼問題?
$('.price_slider').slider({orientation:"horizontal",range:true, animate:200,min:0,max:10000, step:100,value:0,values:[{{min_rent}},{{max_rent}}], slide:function(event,ui){
$('input#lower_bound').val(ui.values[0]);
$('input#upper_bound').val(ui.values[1]);
}
});
$('input#lower_bound').change(function(){
$('.price_slider').slider("values",[$(this).val(),$('input#upper_bound').val()]);
});
$('input#upper_bound').change(function(){
$('.price_slider').slider("values",[$('input#lower_bound').val(),$(this).val()]);
});
EDIT--
馬特,我看到了你的修訂。只是好奇,如果你的版本比我的效率更高。礦似乎是工作,但顯然我不是專家:
$lower.add($upper).change(function() {
var lowEnd=parseInt($lower.val());
var highEnd=parseInt($upper.val());
if(highEnd>lowEnd){
$slider.slider('values', 0, parseInt($lower.val(), 10));
$slider.slider('values', 1, parseInt($upper.val(), 10));
}
else{
$slider.slider('values', 0, parseInt($lower.val(), 10));
$slider.slider('values', 1, parseInt($lower.val(), 10));
$upper.val([$lower.val()]);
}
});
嗨馬特,這是一個很好的答案水平。它的工作,但有一些有趣的評論。首先,parseInt是沒有必要的。其次,{{括號是Django模板變量。我根據用戶以前的搜索設置範圍值。最後,我在文本輸入事件處理程序中創建了一個額外的條件。如果$ lower.val()> $ upper.val() - > $ upper.val([$ lower.val()])。否則,滑塊重疊在錯誤的方向和質樸的行爲導致 – Ben 2011-05-09 15:34:07
我改變了文本輸入處理程序的邏輯,你看到最新版本? – 2011-05-09 15:38:28
嗨馬特,我剛纔看到了變化。我看到你的工作原理,但我的(見上面的編輯)似乎需要更少的代碼。一般很好奇爲什麼一個人會優先於另一個人。 – Ben 2011-05-09 15:45:12