1

次の Javascript を使用して、クリック後にボタンを無効にします。

var c = 0;
function DisableClick(target) {
    var objName = target;
    document.getElementById(objName).disabled = true;
    c = c + 1;
    msg = 'Please Wait...(' + c + ')!';
    document.getElementById(objName).value = msg;
    var t = setTimeout('DisableClick()', 1000);
}

<asp:Button ID="btnLogin" runat="server" CssClass="cssLoginButton blue"  Text="Log in" ToolTip="Log in" ValidationGroup="UserLogin" onclick="btnLogin_Click" OnClientClick="DisableClick('btnLogin')" />

私のJavascriptはこのエラーを出します:

Microsoft JScript ランタイム エラー: プロパティ 'disabled' の値を設定できません: オブジェクトが null または未定義です

スクリプトによるエラー

どうすればこれを解決できますか?

4

4 に答える 4

1

クリックされたボタン オブジェクトを JavaScript 関数で渡すことができます。ポストバックが必要ない場合は false を返します。

変化する

OnClientClick="DisableClick('btnLogin')" 

// the DisableClick make a loop, so make the return here.
OnClientClick="DisableClick(this);return false;" 


function DisableClick(target) {   
    target.disabled = true;
    c = c + 1;
    msg = 'Please Wait...(' + c + ')!';
    target.value = msg;

    // The DisableClick needs the target parametre, so send it again
    //  but need to keep it here for work.
    var me = target;
    var t = setTimeout(function(){DisableClick(me);}, 1000);
}
于 2012-11-24T06:58:06.263 に答える
0

詳細:これにより、プロセスが完了するまでメッセージを表示するだけでなく、ボタンを無効にするという解決策が解決されます。

マークアップ

<asp:ScriptManager ID="ScriptManager1" runat="server">
    </asp:ScriptManager>

 <asp:UpdatePanel ID="UpdatePanel1" runat="server">
     <ContentTemplate>

      .... Your other code

        <asp:Button ID="btnLogin" runat="server" CssClass="cssLoginButton blue"  Text="Log in" ToolTip="Log in"
           OnClientClick="this.disabled=true;" ValidationGroup="UserLogin" onclick="btnLogin_Click"  />

     </ContentTemplate>
</asp:UpdatePanel>

<asp:UpdateProgress ID="UpdateProgress1" runat="server">
        <ProgressTemplate>
            Please Wait...
        </ProgressTemplate>
    </asp:UpdateProgress>

テストするには

コードビハインド

protected void btnLogin_Click(object sender, EventArgs e)
{
   // Introducing delay for demonstration.
   System.Threading.Thread.Sleep(3000);      
}
于 2012-11-24T07:24:05.523 に答える
0

あなたができることは、本体のロード時に関数を呼び出すことであり、正常に動作するはずです。したがって、コードは次のようになります

<script type="text/javascript">
function disableBtn()
{
var btn= document.getElementById("<%=Button1.ClientID%>");
btn.disabled=true;
}
</script>

HTML

<body onload="javascript:disableBtn();">

 <asp:Button ID="Button1" runat="server" Text="Button" />
 ...
 </body>

これがあなたを助けることを願っています!

于 2012-11-24T06:56:45.107 に答える
0

あなたができる

OnClientClick = "JavaScript: return false; "

また

document.getElementbyid (objectName) 

null を返します

の正しい ID を渡していますか? ボタン?

于 2012-11-24T06:54:10.177 に答える