簡體   English   中英

用javascript更改asp.net按鈕的文本

[英]change text of asp.net button with javascript

我有一個表單提交按鈕,它連接了asp.net驗證器。 如果我使用javascript函數將文本更改為處理時單擊它不起作用。 該按鈕標記驗證器,並使整個頁面回發。 繼承我的代碼:

C#

 protected void Page_Load(object sender, EventArgs e)
{
    btnPurchase.Attributes["onClick"] = "submit()";
}

HTML

<script type="text/javascript">
    function submit() {
        document.getElementById("ctl00_ContentPlaceHolder1_btnPurchase").value = "Processing";
    };
</script>

如果表單通過驗證,我的目標是將按鈕文本更改為購買onclick,然后在我的代碼后面,一旦表單回發,它將更改回原始值。

我跑過這個100%完美的解決方案。 我正在使用腳本管理器和更新面板......

<script type="text/javascript">

        // Get a reference to the PageRequestManager.
        var prm = Sys.WebForms.PageRequestManager.getInstance();

        // Using that prm reference, hook _initializeRequest
        // and _endRequest, to run our code at the begin and end
        // of any async postbacks that occur.
        prm.add_initializeRequest(InitializeRequest);


        // Executed anytime an async postback occurs.
        function InitializeRequest(sender, args) {
            // Get a reference to the element that raised the postback,
            //   and disables it.
            $get(args._postBackElement.id).disabled = true;
            $get(args._postBackElement.id).value = "Processing...";
        }
        // Executed when the async postback completes.
        function EndRequest(sender, args) {
            // Get a reference to the element that raised the postback
            //   which is completing, and enable it.
            $get(args._postBackElement.id).disabled = false;
            $get(args._postBackElement.id).value = "Purchase";
        }

</script>

我剛剛問了一個非常相似的問題(已經回答): ASP.NET自定義按鈕控件 - 如何覆蓋OnClientClick但保留現有行為?

基本上,您需要保留提交按鈕的現有行為( __doPostBack )。 您可以使用Page.GetPostBackEventReference(myButton)執行此操作。

但是通過驗證會更加困難,所以你需要內聯頁面驗證( Page.Validate() )或者像我一樣創建自定義控件並覆蓋OnClientClickPostBackOptions成員。

自定義控件更好,因為我現在可以將此控件放在我想要此行為的任何頁面上。

您可以這樣做並公開一個公共財產:

public string loadingText {get; set;}

這可用於自定義每頁上的加載文本。

您基本上需要設置onclick屬性來執行以下操作:

onclick = "if (Page_Validate()) this.text = 'Processing';{0} else return false;"

{0}應該是從Page.GetPostBackEventReference中檢索的常規回發操作。

生成的邏輯將是:單擊,驗證頁面,成功,更改文本和回發,如果失敗,返回false - 這將在頁面上顯示驗證。

將按鈕設置為HTML中的默認文本“提交”,然后將上述邏輯包裝在!Page.IsPostBack中,以便重置表單提交上的文本。

希望有所幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM