Theo tôi có thể nói điều này chỉ bị hỏng trong Internet Explorer. Tôi có một tập lệnh tạo nhiều phần tử động < chọn > và thêm sự kiện thay đổi cho chúng. Sự kiện onchange cháy trong Firefox không có vấn đề nhưng trong Internet Explorer nó không bao giờ cháy. Sử dụng Thanh công cụ dành cho nhà phát triển Tôi thấy DOM có sự kiện chính xác được liệt kê, nó không bao giờ cháy. Tôi đã giải quyết vấn đề với mã sau:Phần tử SELECT được thêm động không kích hoạt sự kiện onchange trong Internet Explorer
<html>
<head>
<script language="javascript">
function addSelect() {
var se = document.createElement('select');
se.setAttribute("onchange", "alert('Dynamic')");
se.options[0] = new Option("1", "1");
se.options[1] = new Option("2", "2");
se.options[2] = new Option("3", "3");
se.options[3] = new Option("4", "4");
var plh = document.getElementById("ph");
plh.appendChild(se);
}
</script>
</head>
<body onload="addSelect()">
<select name="something" onchange="alert('Static')">
<optgroup label="set1">
<option value="1">1</option>
<option value="2">2</option>
</optgroup>
<optgroup label="set2">
<option value="3">3</option>
<option value="4">4</option>
</optgroup>
</select>
<div id="ph">
</div>
</body>
</html>
Thông điệp cảnh báo tĩnh xuất hiện tốt, nhưng thông báo động không thực hiện bất kỳ điều gì trong Internet Explorer. Tôi gần như tích cực Tôi đã nhìn thấy công việc này ở nơi khác, nhưng tôi dường như không thể tìm thấy các ví dụ khác. Có ai nhìn thấy/biết một cách để có được điều này để làm việc?
Hoặc sử dụng JQuery để ràng buộc sự kiện/kích hoạt :) –
vấn đề ban đầu sử dụng JQuery, và cố gắng đối xử với các sự kiện như là thuộc tính tiêu chuẩn là một phần của vấn đề. Tại sao IE không phân tích cú pháp chuỗi là một nỗi đau lớn ... –
Vâng, tôi đã gặp sự cố khi cố gắng sử dụng hàm .attr() của jQuery để gán một sự kiện onchange. Chỉ định DOM trực tiếp của elem.onchange = function() {blah; } làm việc rất tốt cho tôi. – kdawg