用于SELECT的HTML onChange不能在IE上运行

时间:2010-05-30 00:59:39

标签: jquery html internet-explorer

我正在使用PHP和jQuery开发一个表单。

这是链接:

http://www.yamaha-motor.com.pe/extreme/php/yamaha/registro/FrmRegistro01.php

它适用于Firefox,但不适用于IE。

你能告诉我什么?

由于

2 个答案:

答案 0 :(得分:4)

您的页面非常复杂,并且带有剪切和粘贴的代码,很难知道您想要演示的问题到底是什么。但是,通过脚本进行简单的浏览就会发现,您正在嗅探addEventListener并特别嗅探IE,并为每个人做完全不同的事情,其中​​很多只是被注释掉了。那么你期待什么?

$('select#cbxMeses').attr('onchange', "javascript:fn_mesSeleccionado()");

这是一个明显的错误。首先,因为事件处理程序属性在开始时不应该有javascript:(仅适用于javascript:伪URL,这也应该永远不会

但无论如何,这根本不是将事件处理程序附加到元素的正确方法;它在IE中不起作用,将JS代码放入字符串中是很丑陋和低效的。使用函数(函数名称或内联function() { ... })和jQuery的事件绑定方法之一。

$(document).ready(function() {
    $('#cbxMeses').change(fn_mesSeleccionado);
    $('#cbxAnos').change(fn_anoSeleccionado);
    ...
});

这无处不在!根本不需要嗅探浏览器!

答案 1 :(得分:0)

我刚解决了。

解决方法是不要做类似的事情:

$('select#cbxMeses').attr('onchange', "javascript:fn_mesSeleccionado()");

......并且这样做:

var select1 = document.getElementById("cbxMeses");
select1.changed = false;
select1.onchange = fn_mesSeleccionado;

显然IE尝试在呈现所有DOM元素之前执行所有JavaScrpit代码。