我有一个带有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,不再进一步)
有人可以告诉我观察员为什么不工作吗?其他安装正在使用此扩展,什么是
答案 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
});
});
});