У меня есть страница (index.htm), содержащий IFrame (iframe.htm) из того же домена.Fire «изменение» событие текстового поля внутри фрейма
Внутри iframe есть элемент textarea, который обрабатывает событие 'change'.
На главной странице есть код jquery, который изменяет содержимое textarea с помощью val(). Затем я пытаюсь запустить событие «change», вызывающее функцию change().
Однако это не работает. Изменение значения, но событие «change» не работает. Это работает, как и ожидалось, если textarea не находится внутри iframe.
ВОПРОС: как заставить событие запускать элемент внутри iframe?
iframe.htm:
<html>
<head>
<script src="jquery.js" type="text/javascript"></script>
<script>
$(document).ready(function() {
$("textarea").bind("change", function() {
alert("changed"); });
});
</script>
</head>
<body>
<textarea id="txt"></textarea>
</body>
</html>
index.htm:
<html>
<head>
<script src="jquery.js" type="text/javascript"></script>
<script>
$(document).ready(function() {
$("#btn").bind("click", function() {
var frame = document.getElementById("frame");
var txt = frame.contentDocument.getElementById("txt");
$(txt).val("hello").change();
});
});
</script>
</head>
<body>
<iframe id="frame" src="iframe.htm"></iframe>
<button id="btn">Fire change</button>
</body>
</html>
попробуйте использовать .trigger ('change') вместо .change() – Sai
change() делает то же самое, это просто ярлык – iZverev