在后端使用后无法从前端访问 asp 按钮

unable to access asp button from front end after it is used at the back end

我有一个由许多 div 构建的表单,当我单击 "Next" 按钮时它会显示当前表单并隐藏其他表单 - 这是使用 jQuery.[=14= 构建的]

现在,我需要在后端验证某些内容,以便在自动回发时,我会在标签上收到一条错误消息。

这是按钮:

<asp:Button runat="server" ID="btnNext" CssClass="btn btn-primary pull-right" Text="Next"  OnClientClick="return false;"/>

在后端是这样使用的:

If valid Then
            lblError.Text = String.Empty
            btnNext.Enabled = True
        Else
            lblError.Text = txtErr
            btnNext.Enabled = False
        End If

这是 "Next" 按钮的 jQuery 脚本:

btnNext.click(function (e) {
        if (divIndex < countDiv) {
            divIndex++;
            $(curDiv).show();
            $(curDiv).siblings().hide(); 
        }
        return false;
    });

问题是,当我点击 "Next" 时,没有任何反应。如果我从后端删除 btnNext 代码,该按钮将正常工作。

有什么想法吗?

附加信息:

我也在为这个项目使用 telerik。为了在不加载整个页面的情况下更改按钮 (enable/disable),我正在使用 RadAjaxManager 并且 btnNext 是更新的控件之一。

当我从更新的控件中删除 btnNext 时,表单可以工作。

删除 OnClientClick="return false;"

尝试像这样切换代码:

If valid Then
        lblError.Text = txtErr
        btnNext.Enabled = False            
    Else
        lblError.Text = String.Empty
        btnNext.Enabled = True
    End If

我觉得问题出在禁用按钮的 if 语句中。 您也可以尝试删除

    btnNext.Disable 

从代码中看看会发生什么。

我实际上设法解决了这个问题。开始了。

由于我使用 Telerik RadAjaxManager 更新了按钮,因此我需要将 jQuery 脚本重新注册到按钮。

https://docs.telerik.com/devtools/aspnet-ajax/controls/ajaxmanager/how-to/executing-custom-javascript-code-after-ajax-update

因此,我在后台代码中使用 btnNext 后立即包含脚本。

If blnValid Then
     lblError.Text = String.Empty
     btnNext.Enabled = True
Else
     lblError.Text = txtErr
     btnNext.Enabled = False
End If

ScriptManager.RegisterStartupScript(Page, GetType(Page), "Script", "initFormWizard();", True)