C# 仅当页面验证时禁用提交按钮

C# 仅当页面验证时禁用提交按钮,c#,asp.net,C#,Asp.net,我不能让它为我的生活工作。我只需要在所有验证完成后禁用Submit按钮,然后页面才能发布到OnClick函数 我有一张填写了RequiredFieldValidator和ValidationSummary的表格。现在它进行验证,按钮被禁用,但页面不会继续发布,它只是停留在以下状态: 我的纽扣 <asp:Button ID="Button3" runat="server" OnClick="Submit_Form" CssClass="btn btn-primary"

我不能让它为我的生活工作。我只需要在所有验证完成后禁用Submit按钮,然后页面才能发布到OnClick函数

我有一张填写了RequiredFieldValidator和ValidationSummary的表格。现在它进行验证,按钮被禁用,但页面不会继续发布,它只是停留在以下状态:

我的纽扣

<asp:Button ID="Button3" runat="server" OnClick="Submit_Form" CssClass="btn btn-primary"
                Text="Submit" OnClientClick="return disableOnSubmit(this);" />

JS来禁用该按钮

<script type="text/javascript">
function disableOnSubmit(target) {
    if (typeof (Page_ClientValidate) == 'function') {
        if (Page_ClientValidate() == false) { return false; }
    }
        target.value = 'Please wait...';
        target.disabled = true;
        return true;
}
</script>

函数禁用Submit(目标){
if(typeof(Page_ClientValidate)==“函数”){
如果(Page_ClientValidate()==false){return false;}
}
target.value='请稍候…';
target.disabled=true;
返回true;
}

我试图阻止用户提交两次表单。在他们点击按钮进入下一页之前,该按钮应该被禁用。

嗯,我经常使用Javascript库Valid8。为验证节省了一些时间,否则我会这样做(原始示例)

<asp:LinkButton 
     Id="btnSubmit" runat="server"
     Text="Submit" CssClass="btn btn-Primary"
     OnClientClick="return Submit()" />
因此,验证发生在客户机上。现在,您只需将其放在您的
页面\u Load

btnSubmit.Click = new EventHandler("btnSubmit_Click");
然后将
Postback
的数据放在
btnSubmit\u中,单击
如下所示:

protected void btnSubmit_Click(object sender, EventArgs e)
{
     // Do Something.
}
这就是我要做的方法,主要是为了避免不必要的
回发。请记住,我的Javascript示例非常原始,只是确保它不是
null

只要阅读您希望避免多次提交的内容,您可以使用
会话变量来避免提交,或者只需执行以下操作:

if(Page.IsPostBack) 
{
     btnSubmit.Enabled = false;
}

这将进入
页面加载
。显然,任何
Postback
都会立即禁用该按钮。因此,您可能希望在实际实施之前确保在您的实施中工作。

您是否错误地说明了这一点。。?您的意思是希望在填写/和/或验证所有必填字段之前禁用该按钮吗。。?你能确认吗?不,相反,我希望该按钮处于活动状态,一旦填写完所有必填字段,用户点击“提交”按钮,它就会禁用该按钮,以防止他们提交表单两次。你需要在asp:button markup
OnClientClick=“if(Page\u ClientValidate)”中包含类似的内容(……
这是一个我尝试过的例子,它仍然卡在禁用按钮上,页面无法发布。唯一的问题是您要求我重写当前使用RequiredFieldValidator的所有30个字段的验证。我还不准备放弃这些。我一定会记住您的建议,作为最后的手段。谢谢您可以添加一个应用于所有三十个字段的
,然后循环验证。
if(Page.IsPostBack) 
{
     btnSubmit.Enabled = false;
}