我有一个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
});
});
});