JS:原型事件 - 观察者没有激活

时间:2015-07-08 21:09:14

标签: javascript magento prototype

我有一个带有onepagecheckout扩展名的magento测试店。这使用onepagecheckout.js。应该在付款单选按钮上添加“点击”事件观察员。但点击它们时没有任何反应。

观察者被添加到单个输入元素中,同时通过它们:

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,不再进一步)

有人可以告诉我观察员为什么不工作吗?其他安装正在使用此扩展,什么是

1 个答案:

答案 0 :(得分:0)

您的输入元素被

隐藏
style="display:none;"

所以没人能点击它们。如果您在开发工具中删除display:none,然后单击单选按钮,则会出现一个警告'点击'弹出。

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

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

更新: 我已经仔细研究过了。这不适用于更改事件,因为每个单选按钮上都有onclick属性。这些不会触发' onchange'。因此,尝试触发(示例):

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
    });
  });
});