1

私のlogin.aspxでは、ボタンをクリックするだけで簡単なクライアント側の検証を実行しようとしています(ユーザー名とパスワードのフィールドが空かどうかを確認してください)。しかし、jquery の .click() は起動していません。どこが間違っていますか。

注:コードビハインドにLoginButton_Clickイベントがあり、これにはいくつかの機能があります。

<script src="Scripts/Login.js" type="text/javascript"></script>

 <td align="right" colspan="2">
     <asp:Button ID="LoginButton" runat="server"  Text="Log In" 
       onclick="LoginButton_Click" class ="validateForm" />
</td>

私の login.js ファイル:

$(function () {

  $('#LoginButton').click(function () {

            var username = $('#txtUserName');
            var pwd = $('#txtPassword');
            if (username.val().length <= 0) {
                alert("User Name is required.");
                return false;
            }
            if (pwd.val().length <= 0) {
                alert("Password is required.");
                return false;
            }

        });
});

前もって感謝します

BB

4

5 に答える 5

4

$("#<%= LoginButton.ClientID %>")外部 JavaScript ファイルでは機能しません。外部ファイルを使用する場合は、aspx ファイルでグローバル変数を作成し、JavaScript ファイルでアクセスします。


編集:

aspx ファイルにグローバル変数を作成します。

var loginButtonId = <%= LoginButton.ClientID %>;

JavaScript ファイルで使用する

$("#" + loginButtonId ).click(function () {...});

注:変数は、JavaScript ファイルへの参照を追加する前に宣言する必要があります。

于 2011-10-14T19:28:02.327 に答える
2

jquery セレクターを使用して、LoginButton で終わる id 属性で選択します。

$(function () {
  $("input[id$=LoginButton]").click(function () {

            var username = $("input[id$=txtUserName]");
            var pwd = $("input[id$=txtPassword]");
            if (username.val().length <= 0) {
                alert("User Name is required.");
                return false;
            }
            if (pwd.val().length <= 0) {
                alert("Password is required.");
                return false;
            }

        });
});
于 2011-10-14T19:38:29.453 に答える
1

onclientclickが必要だと思います。

http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.button.onclientclick.aspx

誰かが気になる場合に備えて...

<script src="Scripts/Login.js" type="text/javascript"></script>

 <td align="right" colspan="2">
     <asp:Button ID="LoginButton" runat="server"  Text="Log In" 
       onclick="LoginButton_Click" onclientclick="validateLogin()" class ="validateForm" />
</td>

login.js ファイル:

function validateLogin() {

            var username = $('#txtUserName');
            var pwd = $('#txtPassword');
            if (username.val().length <= 0) {
                alert("User Name is required.");
                return false;
            }
            if (pwd.val().length <= 0) {
                alert("Password is required.");
                return false;
            }

            return true;
}
于 2011-10-14T19:27:17.580 に答える
1

あなたの .js ファイルでは、javascript がこの値を読み取ることができなかったからです: 次の$("#<%= LoginButton.ClientID %>")
ことを行う必要があります: - このコードを HTML ページの最後に配置します。
または
- 固定セレクターを js ファイルに入れる

于 2011-10-14T19:29:09.093 に答える
1

#LoginButton存在しません。asp ボタンがレンダリングされると、それを含む ASP コントロールに関連する特殊な ID にレンダリングされますctrl00_mycontrol_panelid_LoginButton。これを外部ファイルに取り込むために必要なことは、グローバル変数を使用することです。

var loginButtonID;
var txtUserNameID;
var txtPasswordID;

$(function () {

  $(loginButtonID).click(function () {

            var username = $(txtUserNameID);
            var pwd = $(txtPasswordID);
            if (username.val().length <= 0) {
                alert("User Name is required.");
                return false;
            }
            if (pwd.val().length <= 0) {
                alert("Password is required.");
                return false;
            }

        });
});

次に、この login.js ファイルを含むファイルで、次を呼び出してこれらの変数を設定する必要があります。

<script type="text/javascript">

loginButtonID = '<%=LoginButton.ClientID%>';
txtUserNameID = '<%=txtUserName.ClientID%>';
txtPasswordID = '<%=txtPassword.ClientID%>';

</script>

これらを新しい「var」修飾子で再宣言しないようにしてください。これにより、スコープが台無しになり、スクリプトが台無しになる可能性があります。

于 2011-10-14T19:56:33.460 に答える