2017-03-06 107 views
0

我初始化我的滑蓋是這樣的:jQuery UI的滑塊錯UI值

var min = 0.1; 
    var max = 20; 
    var low = 0.1; 
    var high = 20; 
    var step = 0.1; 

    $(this).slider({ 
     range: true, 
     min: min, // 0.1 
     max: max, // 20 
     values: [ low, high ], // 0.1 | 20 
     step: step, // 0.1 
     animate: "slow", 
     slide: function(event, ui) { ... } 

正在工作perfeclty,除非我的價值最高/高爲20 在這種情況下,裏面的slide function我得到的值19,9ui.values[1]。因爲我需要防止用戶移動我被檢查這樣的第二把手:

if (ui.values[1] != high){ 
     return false; 
    } 

現在20不等於19.9用戶無法移動任何的把手。有任何想法嗎?

+0

可能重複[浮點數學是否被破壞?](http://stackoverflow.com/questions/588004/is-floating-point-math-broken) – CBroe

+0

不知道是否適合。儘管我正在解析浮點數(min,max,low,high),但在使用alert()時,這些值是**正確**。這只是ui.values [1],這是錯誤的,我根本無法影響? – 4ndro1d

+0

直接使用20不會改變任何東西,請參閱我編輯的問題(變量init) – 4ndro1d

回答

1

的問題可以在浮點數。所以你最好使用乘以10的值,並假設1代表0.1,200代表20,依此類推。希望它會有所幫助。

1

你遇到的問題是你最初的0.1女巫是一個浮點值。如果你初始化爲0,它將起作用。同時,我認爲你應該檢查這個代替if (ui.values[1] == high)

var min = 0; 
 
    var max = 20; 
 
    var low = 0.1; 
 
    var high = 20; 
 
    var step = 0.1; 
 

 
    $("#slider").slider({ 
 
    range: true, 
 
    min: min, // 0.1 
 
    max: max, // 20 
 
    values: [low, high], // 0.1 | 20 
 
    step: step, // 0.1 
 
    animate: "slow", 
 
    slide: function(event, ui) { 
 
     console.log(ui.values) 
 
     if (ui.values[1] == high) { 
 
     return false; 
 
     } 
 

 
    } 
 
    });
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<script src="https://cdnjs.cloudflare.com/ajax/libs/jqueryui/1.12.1/jquery-ui.min.js"></script> 
 
<link rel="stylesheet" type="text/css" href="https://cdnjs.cloudflare.com/ajax/libs/jqueryui/1.12.1/jquery-ui.css"> 
 

 
<div id="slider"></div>

+0

問題是我需要float值。看來他們正在造成麻煩。剛纔發現有很多漂浮物計算錯誤 – 4ndro1d

+0

是的,你似乎是對的(至少對於我試過的數字)。 0有幫助。問題是最小值需要在高達1000的所有正浮點數之間變化。 – 4ndro1d

+0

但是,你需要一個浮點數作爲init值嗎? – Zorken17