【问题标题】:jquery slider tooltip does not update on textbox changejquery滑块工具提示不会在文本框更改时更新
【发布时间】:2013-06-26 05:20:52
【问题描述】:

我有一个带有工具提示的 jquery 滑块控件。用户可以滑动来改变调整工具提示的值,或者用户可以在文本框中输入值,滑块和工具提示应该调整文本框中的值。

见附件 jfiddle http://jsfiddle.net/k2sarah/caUku/2/

<div id='slider'></div>
<div id='slider2'></div>
<input id='t1' type='text' />       


var initialValue = 2012;

var sliderTooltip = function(event, ui) {
    var curValue = ui.value || initialValue;
    var target = ui.handle || $('.ui-slider-handle');                                     
    var tooltip = '<div class="tooltip"><div class="tooltip-inner">' + curValue +
         '</div><div class="tooltip-arrow"></div></div>';   
   $(target).html(tooltip);


 }

    $('#t1').change(function () {
    var value = $('input[id$=t1]').val();
    $("#slider").slider("value", parseInt(value));
                    sliderTooltip;
    });

    $("#slider").slider({
    value: initialValue,
    min: 1955,
    max: 2015,
    step: 1,
    create: sliderTooltip,
    slide: sliderTooltip


 });

    var sliderTooltip1 = function(event, ui) {
        var curValue1 = ui.value || initialValue;
         var target = ui.handle || $('.ui-slider-handle');
        var tooltip = '<div class="tooltip"><div class="tooltip-inner">' + curValue1 +  
        '</div><div class="tooltip-arrow"></div></div>'; $(target).html(tooltip);
    }

    $("#slider2").slider({
        value: initialValue,
        min: 1955,
        max: 2015,
        step: 1,
        create: sliderTooltip1,
        slide: sliderTooltip1
    });

以下代码调整滑块的值,但不会导致工具提示值反映到当前滑块值。

$('#t1').change(function () {
var value = $('input[id$=t1]').val();
$("#slider").slider("value", parseInt(value));
                sliderTooltip;
});

任何帮助将不胜感激。

谢谢 肯

【问题讨论】:

    标签: jquery jquery-ui


    【解决方案1】:

    这里有一个解决方案:jsFiddle

    这将触发滑块的更改事件:

    $('#t1').change(function () {
            var value = $(this).val();
            $(".slider").slider("value", parseInt(value));
        });
    

    现在我们必须监听滑块内的更改事件:

     change: function (event, ui) {
                $(".tooltip-inner").html(ui.value);
            }
    

    整个滑块现在看起来像这样(如您所见,工具提示仅在创建时设置一次):

    $(".slider").slider({
            value: initialValue,
            min: 1955,
            max: 2015,
            step: 1,
            create: sliderTooltip,
            slide: function (event, ui) {
                $(".tooltip-inner").html(ui.value);
            },
            change: function (event, ui) {
                $(".tooltip-inner").html(ui.value);
            }
        });
    

    【讨论】:

      【解决方案2】:

      你的小提琴有太多错误,应该是:

      $('#t1').change(function () {
          var value = $('input#t1').val();
          $("#slider1").slider("option", "value", parseInt(value, 10));
          sliderTooltip();
      });
      

      编辑: 添加了change 事件以更新句柄值:

      change: function (event, ui) {
          $(".tooltip-inner", this).html(ui.value);  /*thanks rusIn */
      

      您还可以将以下内容添加到slide: 以反映输入字段中的更改:

      $('#t1').val(ui.value);
      

      见工作fiddle

      【讨论】:

      • Thks....re working fiddle,当我更改文本框时,滑块位置发生变化,但工具提示不反映更改的值
      • @2428475 见编辑回答
      【解决方案3】:

      你必须调用你的函数,尝试改变:

      sliderTooltip;
      

      到:

      sliderTooltip();
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-10-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多