2012-02-15 22 views
1

私はonchangeイベントをキャプチャしようとしている2つのテキストボックスを持っています。これらのテキストボックスは、asp.netのupdatepanel内にあるユーザーコントロール内にあります。テキストボックステキストを変更するたびに、他の有用な情報を提供しない「Microsoft JScript実行時エラー:オブジェクトが予期される」というエラーが表示されます。ここでなぜasp.netユーザーコントロール内でtextbox onchangeイベントが正しく発生しないのですか?

コードです:

<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ページにこの正確なコードを入れて、それがエラーなしで正常に実行されます。

EDIT Firebugは、実際のエラーで見たとき、ページが実行されたときResetOrientationImage機能が見つからないことです。 JavaScriptをユーザーコントロールからページ自体に移動すると、期待どおりに機能します。なぜ、javascriptがユーザーコントロールに存在しないのですか?ここ

+0

何かがあなたと別の場所でjavascriptを台無しにしている、あなたがuserControlを追加しているページでエラーを探します – GregM

+0

IE8 +のJavaScriptコンソールでエラーを指摘しましたか? 'document.getElementById( '<%= txtWidth.ClientID%>')。value'をデバッグしましたか?もう片方が戻りますか? – epascarello

答えて

0

私は私に私の答えを与えたこの質問につまずいた:私は外部ファイルに私のjavascript機能を移動し、このような背景にあるユーザーコントロールのコードでそれを参照し

Javascript object "is not defined" error after ScriptManager.RegisterClientScriptInclude

ScriptManager sm = ScriptManager.GetCurrent(Page); 
    ScriptReference sr = new ScriptReference("~/scripts/ResetOrientationImage.js"); 
    if (!sm.Scripts.Contains(sr)) 
     sm.Scripts.Add(sr); 
1

いくつかのこと:

var width = (+document.getElementById('<%= txtWidth.ClientID %>').value); 
var height = (+document.getElementById('<%= txtHeight.ClientID %>').value); 

"+" "ドキュメント" の前に先頭に無効です。

widthおよびheightは文字列になります。あなたはそれらの整数にする必要があります。

また
var width = parseInt(document.getElementById('<%= txtWidth.ClientID %>').value); 

- してくださいどのようにあなたのHTML 出力ではなく、あなたの.NET ソース。問題はクライアントであり、サーバーではありません。

+0

parseIntに私をまっすぐに設定していただきありがとうございます。私は自分のコードで修正しました。 – Aaron

関連する問題