1

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

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

4

3 回答 3

3

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

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

//Special round
function SpecialRound(f) {
   return Math.round(f*100) / 100;
}
于 2011-09-06T15:27:13.193 回答
1

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

例如:

$( "#str" ).change(function() {
    var val = this.val(); // you can do your rounding here then...
    $("#str_slider").slider( "value", val );
});
于 2011-09-06T15:28:19.140 回答
1

通过查看您的测试页,您在 SpecialRound 的第 54 行

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

那应该是

var r=Math.round(f*100)/100;
于 2011-09-06T15:57:33.143 回答