将 .stepUp() 与 JQuery 一起使用会返回错误“.stepUp 不是函数”

鲁本·克莱特克

我有以下代码:

请参阅此处的 codepen 示例:https ://codepen.io/Rubenkretek/pen/VwYQVgO ? editors = 1111

预期结果:单击“+”按钮时,输入字段增加 1。

实际结果:输入无变化,出现以下错误:

类型错误:selectedInput.stepUp 不是函数

$(function() {

  $('<span class="add" uk-icon="plus">+</span>').insertAfter('.product-container .product-quantity input');
  $('<span class="sub" uk-icon="minus">-</span>').insertBefore('.product-container .product-quantity input');


  $('.add').click(function() {

    var selectedInput = $(this).prev('input');

    if (selectedInput.val() < 10) {
      console.log("value is less than 10");
      $('.add').click(function() {
        selectedInput.stepUp(1);
      });
    }

  });


});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="product-container">
  <div class="product-info">
    <h2>Product name</h2>
  </div>
  <div class="product-quantity">
    <input type="number"></input>
  </div>
</div>

普隆詹

您正在嵌套事件处理程序。只有一个和委托

stepUp 也是一种 DOM 方法,因此您需要从 jQuery 获取 DOM 元素(将 [0] 添加到元素)

注意:type=number 有自己的微调控件

$(function() {

  $('<span class="add" uk-icon="plus">+</span>').insertAfter('.product-container .product-quantity input');
  $('<span class="sub" uk-icon="minus">-</span>').insertBefore('.product-container .product-quantity input');

  $('.product-quantity').on("click", '.add, .sub', function() {
    const selectedInput = $(this).closest('div').find('input')[0]; // stepUp is a DOM method
    let dir = $(this).is(".add");
    selectedInput.stepUp(dir ? 1 : -1);
    if (selectedInput.value < 10) {
      console.log("value is less than 10");
    }
  });
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="product-container">
  <div class="product-info">
    <h2>Product name</h2>
  </div>
  <div class="product-quantity">
    <input type="number" />
  </div>
</div>

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

数组push()jQuery得到TypeError:'stepUp'

TypeScript stepUp 方法在输入类型编号上引发错误

TypeError:在未实现接口HTMLInputElement的对象上调用stepUp

在未实现接口HTMLInputElement的对象上调用了'stepUp'

stepUp和stepDown在Edge和IE中不起作用

将jquery.js与jquery-ui.js一起使用时,“未定义不是函数”

将.find()jQuery函数与nodeList一起使用

包含readyselector插件时,将$符号与jQuery一起使用会产生错误

将Room与关系一起使用会返回错误

为什么每次单击时我的 stepUp/stepDown 按钮都会提交表单

将Redux.createStore与Immutable一起使用会引发“减少器不是函数(如何将Redux与Immutable.js和composeEnhancers一起使用)

$不是函数-jQuery错误

$(...)。on不是函数-jQuery错误

将Lodash与create-react-app一起使用会导致“未捕获的TypeError:_this.reduce不是函数”

将错误与errorf而不是sprintf一起使用

当将命名函数与jQuery ajax绑定在一起时出现404错误

将stop()与jquery一起使用只能启动一个函数

当将Redux Saga与React一起使用时,出现此错误..未捕获的TypeError:getPosts不是函数

WebDriverException:未知错误:document.getBoxObjectFor不是将Selenium与ChromeDriver和Chrome通过Java一起使用的函数

尝试将页面对象与量角器一起使用时出现“对象不是函数”错误

尝试将 libsodium 与网络工作者错误 TypeError 一起使用:sodium.crypto_pwhash 不是函数

将 ++ 与 jquery $.each() 一起使用

将jQuery插件与$ .on()一起使用

jQuery 错误:$(...).modal 不是函数

将REST-API与入门指南一起使用会返回500错误

Rails 4 JQuery函数返回“不是函数”

将通用组件与resolveComponentFactory一起使用会导致Component <{}>而不是<T>

将流星与coffeescript和玉一起使用:callback [i] .call不是函数

为什么将floatThead与Angular / TypeScript一起使用会产生错误属性'floatThead'在类型'JQuery <any>'中不存在