JS: prototype event-observer没有触发



我有一个magento测试商店与onepagecheckout扩展。这使用了一个onpagecheck .js。应该在支付单选按钮中添加"click"事件观察者。但是当点击它们时,什么也没发生。

观察器被添加到单个输入元素中,同时每次遍历它们:

addObservers: function () {
  $$('input[name="payment[method]"]').each(function (el) {
    el.observe('click', function () {
      checkout.update({
        'review': 1,
        'payment-changed': 1
      });
    });
  });
}

每个元素都是,可以在Chrome调试器中看到,适合输入元素的id和名称:

el = input#p_method_bankpayment.radio
el = input#p_method_paypal_express.radio
el = input#p_method_cashondelivery.radio
el = input#p_method_phoenix_cashondelivery.radio

当页面加载时,更新函数通过AJAX调用新内容,但没有执行,也没有看到网络活动,此时应该触发事件。

安装可以在这里看到:http://5.175.9.22/gp_de/onepagecheckout/(把东西放进购物车/Warenkorb,去结帐/Zur Kasse,不要进一步)

谁能告诉我为什么观察员不工作?

是什么?

你的输入元素被

隐藏
style="display:none;"

所以没有人可以点击它们。如果你在dev-tools中删除display:none,然后点击单选按钮,一个警告' click '会弹出。

尝试使用更改事件而不是单击

addObservers: function () {
   $$('input[name="payment[method]"]').each(function (el) {
    el.observe('change', function () {
      checkout.update({
        'review': 1,
        'payment-changed': 1
      });
    });
  });
}

更新:我仔细看了一下。这不能用于更改事件,因为每个单选按钮上都有onclick属性。这些都不是在"变化"时触发的。所以尝试触发(示例):

onclick="payment.switchMethod('phoenix_cashondelivery')"

事件

$$('input[name="payment[method]"]').each(function (el) {
  el.observe('change', function () {
    $(this).simulate('click');
    checkout.update({
      'review': 1,
      'payment-changed': 1
    });
  });
});

最新更新