2011-09-06 76 views
1

問題我想使我第一次jQuery的滑塊,我有這樣的代碼:使用jQuery滑塊和輸入

$("#str").keyup(function(event) { 
var data=$("#str").val(); 
if (data.length>0) 
{ 
var intdata=SpecialRound(parseFloat(data)); 
if (intdata>=0 && intdata<=20) 
{ 
    $("#str_slider").slider("option", "value", data); 
} 
else 
{ 
    if (intdata<0) 
    { 
    $("#str").val("0"); 
    $("#str_slider").slider("option", "value", "0"); 
    } 
    if (intdata>20) 
    { 
    $("#str").val("20"); 
    $("#str_slider").slider("option", "value", "20"); 
    } 
} 
} 
}); 

雖然,我有一個問題。當我用ID #str在輸入中寫入內容時,沒有任何反應。雖然,滑塊工作完美。 你可以測試att http://vpopulus.tk/damage

編輯:我基本上想編輯輸入時,滑塊也改變了。

+2

什麼是SpecialRound()? – JiminP

+0

哦,這只是我用來舍入到小數點後兩位的函數。 – SnackerSWE

回答

3

我認爲你的選擇器$('#str')是問題,因爲你的輸入沒有ID #str,而只是一個名爲「str」的屬性。正確的選擇是$('input[name="str"]')

編輯: 實際的問題是這樣的SpecialRound功能,因爲您使用的是不存在的功能「輪()」在那裏。使用這個來代替:

//Special round 
function SpecialRound(f) { 
    return Math.round(f*100)/100; 
} 
+0

啊,對不起。我將一些舊代碼與新代碼混合在一起。但是你可以在第232行看到我有ID。 – SnackerSWE

+0

好的,沒有看到第二個輸入,抱歉。你的specialRound()函數是問題,你在那裏使用'round()',但它實際上是'Math.round()'。 – Niko

+0

我改變了這一點,但似乎也有另一個問題... – SnackerSWE

1

如果我是你,我會使用更改事件,而不是KEYUP

例如:

$("#str").change(function() { 
    var val = this.val(); // you can do your rounding here then... 
    $("#str_slider").slider("value", val); 
}); 
1

通過看你的testpage,你必須在54行在SpecialRound

var r=round(f*100)/100; 

,應該是

var r=Math.round(f*100)/100; 
+0

噢,謝謝。我只是習慣於PHP:/ – SnackerSWE