我用于选择菜单中的更改的Prototype事件侦听器未在IE中触发.
Event.observe('use_billing', 'change', Checkout.getBillingData);
这在Firefox(当然)中运行良好,但IE中没有任何事情发生(当然) – 我一直在谷歌搜索这段时间,但我还没有找到合适的解决方案来解决这个问题.我读到有问题,但我发现没有什么有用的可以绕过这个问题并让它发挥作用.
我真的试图避免使用内联事件触发器,因为它们是突兀的,并使得容易出错的凌乱文档:
<select id='use_billing' onchange="Checkout.getBillingData();">....</select>
任何想法都会很棒 – 这是阻止这个项目从测试到生产的唯一因素.
最佳答案:
这是IE的常见问题.在元素失去焦点之前,它不会触发更改事件.
要确认这确实是导致问题的原因,请尝试更改菜单,然后按Tab键将焦点移至另一个元素.如果您的回调正常,您将知道没有其他问题.
我之前通过监听其他事件(如click或keydown)解决了这个问题.您可以在回调中添加一个检查,以确保该值实际上与以前不同,以确保您不会处理事件的次数超过必要(因为其他浏览器会在点击时同时触发点击和更改一个新的价值).