【问题标题】:number box not firing event on keyup when value is 0当值为 0 时,数字框不会在 keyup 上触发事件
【发布时间】:2013-03-01 15:41:02
【问题描述】:

在我看来,我有这样的事件:

events: {
      'click .po_total .updates_total': 'updateTotal',
      'focusout .po_total .updates_total': 'updateTotal',
      'keyup .po_total .updates_total': 'updateTotal'
}

haml JSHTML 是:

%input.span2#shipping.updates_total{type: "number", name: "shipping", min: "0.00", step: "0.01", value: "0.00"}

这里是更新的代码

updateTotal: function(e) {
  if(e){
    e.preventDefault();
    e.stopImmediatePropagation();
  }
  this.$el.find('.po_total #total').html(this.getOrderTotal());

  if (Application.Helpers.currencyToValue(this.$('#total').html()) > 0 ) {
    this.watchTotal(e);
  }
},

问题是当值更改为 0 时 updateTotal 事件不会触发。它在所有其他时间都有效,但在它为 0 时不会。我需要它在值为 0 时工作,因为有条件行为当值为 0 时发生在 updateTotal 中,当前从未发生。

当值变为 0 时如何触发事件?an

【问题讨论】:

  • 您在此处粘贴的代码不相关。我们需要查看updateTotal的代码。
  • 我会把它贴出来,但我的问题是函数没有被触发,而不是函数中的代码。即使函数只是:updateTotal: function(){alert('doing stuff');} 它也不起作用
  • 将代码添加到顶部
  • 我在其中看到“total > 0”if() 语句。你确定这个函数实际上没有被调用,而不是被调用然后什么都不做,因为你正在寻找一个大于 0 的值?
  • 如果事件没有触发,则它不是 Backbone。这是 jsFiddle 显示使用 '0' 的 keyup。 jsfiddle.net/phoenecke/6qkXm/5

标签: javascript javascript-events backbone.js


【解决方案1】:

事实证明,由于某种原因,由于 .po_class 事件未正确初始化。尽管 dom 结构是正确的,但这不适用于值为 0 的元素。我删除了那个类,现在它可以工作了

【讨论】:

    猜你喜欢
    • 2011-09-29
    • 2018-04-30
    • 2018-07-30
    • 1970-01-01
    • 2012-01-10
    • 2018-08-12
    • 1970-01-01
    • 1970-01-01
    • 2013-07-02
    相关资源
    最近更新 更多