【问题标题】:javascript Error: 'return' statement outside of function when trying to disable a button on submitjavascript 错误:尝试禁用提交按钮时,函数外部的“返回”语句
【发布时间】:2010-08-27 09:03:35
【问题描述】:

我正在尝试重新使用我从该站点上的一个线程中获得的功能。我想在单击时禁用 asp.net 按钮,以便用户不会多次单击它。

该按钮位于 Ajax 更新面板中,并且还有一个 ConfirmButtonExtender,但是当我单击它时,它会在 Internet Explorer 中出现此 javascript 错误。

**

错误:“return”语句在 功能

**

当我删除 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的验证控件按钮。

【问题讨论】:

  • 实际执行的 JavaScript 在哪里?
  • 渲染 html 和 js 会有所帮助。

标签: javascript asp.net asp.net-ajax


【解决方案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);")

【讨论】:

    猜你喜欢
    • 2012-05-06
    • 1970-01-01
    • 2010-12-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-06
    • 2015-11-21
    • 2019-03-19
    相关资源
    最近更新 更多