javascript - jQuery UI Slider 不改变默认值

标签 javascript jquery jquery-ui jquery-ui-slider

我已经使用 jQuery UI 设置了一个 slider ,并显示了正确的默认值 60。但 slider 仍然在最左边。它应该移动到值 60。

https://imgur.com/a/QXfzugs

尝试了在 StackOverflow 上找到的不同选项,但没有任何帮助。

var gewichtSlider = $("#gewicht-slider").slider({
    min: 40,
    max: 200,
    slide: function(event, ui) {
        $("#gewicht").val(ui.value).trigger('change');
        $("#gewicht-label").text(ui.value);
        $("#gewicht-handle").text(ui.value + ' kg');
    }
});
gewichtSlider.slider('option', 'slide').call(gewichtSlider, null, {value: 60});

slider 没有移动。

JSfiddle:https://jsfiddle.net/tz6pea5c/

最佳答案

slider 的默认值是使用 value 属性设置的。要在标签中显示初始值,您需要添加一个 create 回调,它在 slider 初始化后立即被调用。然后,您需要添加一个 slide 回调来响应滑动事件并相应地更改标签的值。最后,我删除了一个隐藏的输入字段,并向您展示了如何使用单击按钮从 slider 本身检索一个值。如果您需要将值保存在隐藏的输入字段中,那么您可以像这样修改 setSliderValue 函数:

function setSliderValue(value) {
  $sliderLabel.text(value + " kg");
  $("#your-hidden-field-id").val(value);
}

下面是完整的工作示例:

var defaultValue = 60;
var $sliderLabel = $(".slider-after");

function setSliderValue(value) {
  $sliderLabel.text(value + " kg");
}

var $gewichtSlider = $("#gewicht-slider").slider({
    min: 40,
    max: 200,
    value: defaultValue,
    create: function() {
      setSliderValue(defaultValue);
    },
    slide: function(event, ui) {
    	setSliderValue(ui.value);
    }
});

$("#current-value").click(function() {
	alert($gewichtSlider.slider( "value" ) + " kg");
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jqueryui/1.12.1/jquery-ui.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jqueryui-touch-punch/0.2.3/jquery.ui.touch-punch.min.js"></script>
<link href="https://cdnjs.cloudflare.com/ajax/libs/jqueryui/1.12.1/jquery-ui.min.css" rel="stylesheet"/>


<div class="gewicht-container question-container">
  <label for="gewicht">Wie schwer bist du?</label>
  <p class="question-desc">Dies ist eine wichtige Angabe für die Matraztenhärte. Daten werden nicht gespeichert ;)</p>

  <div class="slider">
    <div class="slider-before">
      Gewicht
    </div>
    <div id="gewicht-slider">
      <div id="gewicht-handle" class="ui-slider-handle"></div>
    </div>
    <div class="slider-after">
    </div>
    <div class="clearfix"></div>
  </div>

  <hr/>
  <button id="current-value">Get current value</button>
</div>

关于javascript - jQuery UI Slider 不改变默认值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58202136/

相关文章:

javascript - 从 HTML 内部调用 JavaScript?

javascript - 当我在 Polymer 2 中输入电子邮件时,我的登录密码不会自动完成

javascript - JQuery ui - 日期选择器、日期格式

jquery-ui - jQuery UI Sortable 的 knockout 自定义绑定(bind) - 奇怪的行为

javascript - 如何动态添加元素到MixItUp?

javascript - Django 如何配置为管理员使用备用静态目录

javascript - 模型窗口显示相同的内容

连接 AJAX 表单的 jQuery 插件 - 必须提供错误回调

css - 如何使用 sprite 背景图像在元素上显示一次(不重复)?

javascript - JQuery UI 自动完成从输入中获取两个信息