【问题标题】:t.find(...).val(...).toFixed is not a functiont.find(...).val(...).toFixed 不是函数
【发布时间】:2020-10-20 19:19:19
【问题描述】:

我在 Drupal 8 上。实际上我使用此代码是为了有加号和减号按钮(用于添加到购物车中的数量)

    var spinner = $(this),
    input = spinner.find('input[type="number"]'),
    btnUp = spinner.find('.quantity-up'),
    btnDown = spinner.find('.quantity-down'),
    min = input.attr('min'),
    max = input.attr('max');
    var step = input.attr('step');
    step = $.isNumeric(step) ? parseFloat(step) : 1;
    var scale = step.toString().split('.');
    scale = scale[1] ? scale.pop().length : 0;

  btnUp.click(function() {
    var oldValue = parseFloat(input.val());
    if (oldValue >= max) {
      var newVal = oldValue;
    } else {
      var newVal = oldValue + step;
    }
    spinner.find("input").val(parseFloat(newVal)).toFixed(scale);
    spinner.find("input").trigger("change");
  });

  btnDown.click(function() {
    var oldValue = parseFloat(input.val());
    if (oldValue <= min) {
      var newVal = oldValue;
    } else {
      var newVal = oldValue - step;
    }
    spinner.find("input").val(parseFloat(newVal)).toFixed(scale);
    spinner.find("input").trigger("change");
  });

代码按预期工作,但 Firefox 和 Chrome 显示:

TypeError: t.find(...).val(...).toFixed 不是函数

有什么想法可以解决这个问题吗?求回答!

【问题讨论】:

  • 因为 val() 是一个字符串,而字符串没有 toFixed()。我假设你想要 toFixed 上 parseFloat....
  • .val(parseFloat(newVal)).toFixed(scale) -> .val(parseFloat(newVal).toFixed(scale))
  • 你在哪里使用了 t 变量?

标签: javascript drupal-8


【解决方案1】:

您的括号在代码中的两个位置过早关闭:

spinner.find("input").val(parseFloat(newVal)).toFixed(scale);

它应该像这样在最后关闭:

spinner.find("input").val(parseFloat(newVal).toFixed(scale));

【讨论】:

  • 快速回答。随着您的代码错误消失,但数字计数器变得疯狂(实际上增加了 10 位数字......像 1-11-21)实际上使用的是整数值,使用十进制值就可以了,但我需要一个不带零的数字(比如1 不是 1.0)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-09-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-07-10
  • 1970-01-01
相关资源
最近更新 更多