jQuery滑块和输入的问题

时间:2011-09-06 15:21:47

标签: javascript jquery jquery-slider

我正在尝试制作我的第一个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

编辑:我基本上想要在编辑输入时这样做,滑块也会改变。

3 个答案:

答案 0 :(得分:3)

我认为您的选择器$('#str')是问题,因为您的输入没有ID #str,只是名称属性值为“str”。正确的选择器为$('input[name="str"]')

修改 实际问题是这个SpecialRound函数,因为你在那里使用了一个不存在的函数“round()”。请改用:

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

答案 1 :(得分:1)

如果我是你,我会使用更改事件而不是keyup

例如:

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

答案 2 :(得分:1)

通过查看您的测试页面,您可以在特殊回合中的第54行

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

应该是

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