У меня есть 2 текстовых поля, для которых я пытаюсь захватить событие onchange.Эти текстовые поля находятся в пользовательском элементе управления, который находится на панели обновления asp.net.Каждый раз, когда я изменяю текст в текстовом поле, я получаю сообщение об ошибке «Ошибка выполнения Microsoft JScript: ожидается объект», которая не предоставляет никакой другой полезной информации.
Вот код:
<script type="text/javascript">
function ResetOrientationImage() {
var width = (+document.getElementById('<%= txtWidth.ClientID %>').value);
var height = (+document.getElementById('<%= txtHeight.ClientID %>').value);
if (width > height) {
document.getElementById('<%= imgOrientation.ClientID %>').src = "images/buttons/Landscape.png";
} else {
document.getElementById('<%= imgOrientation.ClientID %>').src = "images/buttons/Portrait.png";
}
}
</script>
<asp:TextBox ID="txtWidth" runat="server" Width="50px" onchange="ResetOrientationImage()" Text="0"></asp:TextBox>
<asp:TextBox ID="txtHeight" runat="server" Width="50px" onchange="ResetOrientationImage()" Text="0"></asp:TextBox>
<asp:Image ID="imgOrientation" ImageUrl="~/images/buttons/Portrait.png" runat="server" />
Я думал, что это должно быть проблемой с javascript, но я поместил этот точный код на отдельную страницу .aspx, и он выполняется правильно без ошибок.
РЕДАКТИРОВАТЬ После просмотра в Firebug,настоящая ошибка заключается в том, что функция ResetOrientationImage не может быть найдена при выполнении страницы.Если я перенесу javascript из пользовательского элемента управления на саму страницу, он будет работать так, как я и ожидал.Почему javascript не может жить в пользовательском элементе управления?