У меня есть динамическая форма, где строки добавляются и удаляются с помощью JavaScript.От Safari, Chrome и Firefox форма работает прекрасно.В IE, давайте просто скажем, что это не так ...
<div id="container">
<div class="row">
<input name="name[]">
<select name="color[]">
<option>Red</option>
<option>Green</option>
<option>Blue</option>
</select>
</div>
<div class="row">
<input name="name[]">
<select name="color[]">
<option>Red</option>
<option>Green</option>
<option>Blue</option>
</select>
</div>
<a id="add-another" href="#">Add a row</a>
</div>
<script src="prototype.js"></script>
<script>
$("container").observe("change", function(ev) {
alert("changed " + ev.element() + " to " + $F(ev.element()));
});
$$("#container input, #container select").each(function(el) {
el.observe("change", function(ev) {
alert("changed[2] " + ev.element() + " to " + $F(ev.element()));
});
});
$("add-another").observe("click", function(ev) {
var cloned = $("container").down(".rule").clone(true);
$("container").insert({top:cloned});
ev.stop();
});
</script>
Единственные сообщения onchange, которые я вижу, это changed[2]
.Я бы предпочел увидеть change
, поскольку это означало бы, что у меня есть только один прослушиватель, а не сотни.
Существуют ли какие-либо известные обходные пути, позволяющие установить одного наблюдателя на родительском узле и получать события onchange?
Я прочитал статью MSDN об onchange и нашел комментарий о том, что onchange не может быть присоединен, но, возможно, существует решение?