javascript - 使用自定义步骤增量时 jQuery UI slider 默认值问题

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

我正在使用“捕捉增量”JQuery UI slider 构建表单:https://jqueryui.com/slider/#steps

我使用以下代码,以便 slider 的自定义最小值为 2501,但仍以偶数 500 递增(不添加额外的 1),直到达到最大值 50000。因此步长增量如下所示: 2501 > 3000 > 3500 > 4000 等等,直到达到 50000。

<script>
$(function() {
  $("#slider").slider({
    value: 10000,
    min: 2501,
    max: 50001,
    step: 500,
    range: "min",
    slide: function(event, ui) {
      var x = Number(ui.value);
      if (x > 2501) {
        x = x - (x % 500);
      }
      $("#LoanAmount").val('$' + addCommas(x));
    }
  });
  $("#LoanAmount").val('$' + addCommas($("#slider").slider("value")));

  function addCommas(nStr) {
    nStr += '';
    x = nStr.split('.');
    x1 = x[0];
    x2 = x.length > 1 ? '.' + x[1] : '';
    var rgx = /(\d+)(\d{3})/;
    while (rgx.test(x1)) {
      x1 = x1.replace(rgx, '$1' + ',' + '$2');
    }
    return x1 + x2;
  }
});
</script>

我需要这个值:10000,以便 slider 在该特定步骤上加载,但问题是它在页面上打印为 10001 而不是 10000 .

关于如何解决这个问题有什么建议吗?

谢谢!

最佳答案

一个可能的解决方案是更正您的 addCommas 函数:

$(function () {
  $("#slider").slider({
    value: 10000,
    min: 2501,
    max: 50500,
    step: 500,
    range: "min",
    slide: function(event, ui) {
      var x = Number(ui.value);
      if (x > 2501) {
        x = x - (x % 500);
      }
      $("#amount").val('$' + addCommas(x));
    }
  });
  $("#amount").val('$' + addCommas($("#slider").slider("value")));

  function addCommas(nStr) {
    var x = Number(nStr);
    if (x > 2501) {
        x = x - (x % 500);
    }
    nStr = x.toString();
    x = nStr.split('.');
    x1 = x[0];
    x2 = x.length > 1 ? '.' + x[1] : '';
    var rgx = /(\d+)(\d{3})/;
    while (rgx.test(x1)) {
      x1 = x1.replace(rgx, '$1' + ',' + '$2');
    }
    return x1 + x2;
  }
});
<link href="https://code.jquery.com/ui/1.11.4/themes/smoothness/jquery-ui.css" rel="stylesheet"/>
<script src="https://code.jquery.com/jquery-1.12.1.min.js"></script>
<script src="https://code.jquery.com/ui/1.11.4/jquery-ui.js"></script>

<p>
    <label for="amount">Amount ($50 increments):</label>
    <input type="text" id="amount" readonly style="border:0; color:#f6931f; font-weight:bold;">
</p>
<div id="slider"></div>

关于javascript - 使用自定义步骤增量时 jQuery UI slider 默认值问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36813696/

相关文章:

javascript - 在 AngularJS 中从表单获取数据而不使用双向数据绑定(bind)

javascript - 将 div 高度设置为与最高高度相同,同时保持响应式布局

Javascript/JQuery 图像选择器

javascript - 计算类为 '.item' jQuery 的变量中的元素

javascript - Accordion 高度问题

javascript - 防止箭头键更改选定的单选按钮

javascript - jquery 缓动插件示例

jQuery 自动完成。选择时,提醒建议中的值

javascript - Jquery 模态/对话框表单不起作用

jquery mobile data-rel=背部麻烦