![](/img/trans.png)
[英]How to enable button on text change event in asp.net using JavaScript
[英]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()
)或者像我一樣創建自定義控件並覆蓋OnClientClick
和PostBackOptions
成員。
自定義控件更好,因為我現在可以將此控件放在我想要此行為的任何頁面上。
您可以這樣做並公開一個公共財產:
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.