2010-12-06 5 views
1

JavaScriptを置いたときにこんにちは、私は$(文書)の内側にこのコードを配置する場合

<asp:TextBox ID="TextBox_FirstName" runat="server"></asp:TextBox> 
<asp:TextBox ID="TextBox_LastName" runat="server"></asp:TextBox> 
<asp:Button ID="txtSubmit" Text="Validate" runat="server" /> 
<asp:CustomValidator ID="AtLeastOneTextBoxValidator" runat="server" 
     ClientValidationFunction="Validate_Textbox" ValidateEmptyText="true"> 
</asp:CustomValidator> 


function Validate_Textbox(sender, args) { 
     var firstName = document.getElementById("<%= TextBox_FirstName.ClientID %>"); 
     var lastName= document.getElementById("<%= TextBox_LastName.ClientID%>"); 
     if ((firstName == "") && (lastName == "")){ 
       window.alert("Error"); 
     } 
} 

.ready $(文書)せずに置かれたときに正常に動作し、次のコードを持っています。 'Microsoft JScriptランタイムエラー:オブジェクトが必要です'エラーです。

何かが だけその document.readyハンドラの範囲で、世界的に...ので、 document.readyハンドラの外に、 Validate_Textboxが存在していないではない...ときに定義されていない、あなたの Validate_Textbox機能を探しているので、起こって
$(document).ready(function(){ 
    function Validate_Textbox(sender, args) { 
     var firstName = document.getElementById("<%= TextBox_FirstName.ClientID %>"); 
     var lastName = document.getElementById("<%= TextBox_LastName.ClientID%>"); 
     if ((firstName == "") && (lastName == "")){ 
       window.alert("Error"); 
     } 
    }  
}); 
+0

文字列として '<%= TextBox_LastName.ClientID%>'を扱っているようですが、値を取得するのではなく、私は推測するつもりです。 – Robert

答えて

7

Validate_Textbox関数を別の(匿名の)関数の中に宣言するようになりました。すべての変数と同様に、現在はその関数内でのみ使用可能です。アプリケーションのどこにでも使用することはできません。

$(document).ready()コールバック内で関数を宣言することは機能上の利点はありません。より良い質問は、Validate_Textboxとなりますか?

+0

CustomValidatorでValidate_Textboxを使用しています。 wiki

3

それを呼び出すと、あなたはあなたのエラーを取得します。

2

これは、$(document).readyブロックの外にある必要があります。これは、自己完結型関数であり、$(document).readyブロック内のコードから呼び出されるためです。

関連する問題