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で入力に何かを書き込んでも、何も起こりません。ただし、スライダーは完璧に機能します。あなたはatthttp: //vpopulus.tk/damageをテストすることができます

編集:基本的には、入力を編集するとスライダーも変更されるようにしたいです。

4

3 に答える 3

3

$('#str')入力には ID #str がなく、値が「str」の名前属性だけであるため、セレクターに問題があると思います。正しいセレクターは$('input[name="str"]')

編集: 実際の問題は、存在しない関数「round()」を使用しているため、この SpecialRound 関数です。代わりにこれを使用してください:

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

私があなたなら、keyup の代わりに change イベントを使用します

例えば:

$( "#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 に答える