2010-08-27 47 views
0

我試圖重新使用從本站的其中一個線程獲得的函數。我想在單擊時禁用一個asp.net按鈕,以便用戶不會多次單擊它。javascript錯誤:嘗試禁用提交按鈕時,函數外部的'return'語句

該按鈕位於Ajax UpdatePanel內,並且有一個ConfirmButtonExtender,但是當我點擊它時,它會在Internet Explorer中得到這個javascript錯誤。

**

Error: 'return' statement outside of function

**

當我刪除ConfirmButtonExtender,每一件事工作正常。

下面是功能

Private Function DisableTheButton(pge As Control, btn As Control) As String 
    Dim sb As New System.Text.StringBuilder() 
    sb.Append("if (typeof(Page_ClientValidate) == 'function') {") 
    sb.Append("if (Page_ClientValidate() == false) { return false; }} ") 
    sb.Append("if (confirm('Are you sure to proceed?') == false) { return false; } ") 
    sb.Append("this.value = 'Please wait...';") 
    sb.Append("this.disabled = true;") 
    sb.Append(Page.ClientScript.GetPostBackEventReference(btn, "")) 
    sb.Append(";") 
    Return sb.ToString() 
End Function 

,下面將我的網頁加載

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load 
    Me.btnSubmit.Attributes.Add("onclick", DisableTheButton(Me.Page, Me.btnSubmit)) 
End Sub 

我也使用asp.net驗證控件按鈕。

+1

哪來執行實際的JavaScript? – 2010-08-27 09:15:16

+1

它將有助於呈現html和js。 – lincolnk 2010-08-27 13:30:14

回答

1

包裝你的JS編碼到一個匿名函數,並將它傳遞按鈕

sb.Append("(function(btn) {") 
sb.Append("if (typeof(Page_ClientValidate) === "function" && confirm("Are you sure to proceed?")) {") 
sb.Append("btn.value = 'Please wait...';") 
sb.Append("btn.disabled = true;") 
sb.Append("Page.ClientScript.GetPostBackEventReference(btn, ""))") 
sb.Append("}})(this);")