C# 仅当页面验证时禁用提交按钮
我不能让它为我的生活工作。我只需要在所有验证完成后禁用Submit按钮,然后页面才能发布到OnClick函数 我有一张填写了RequiredFieldValidator和ValidationSummary的表格。现在它进行验证,按钮被禁用,但页面不会继续发布,它只是停留在以下状态: 我的纽扣C# 仅当页面验证时禁用提交按钮,c#,asp.net,C#,Asp.net,我不能让它为我的生活工作。我只需要在所有验证完成后禁用Submit按钮,然后页面才能发布到OnClick函数 我有一张填写了RequiredFieldValidator和ValidationSummary的表格。现在它进行验证,按钮被禁用,但页面不会继续发布,它只是停留在以下状态: 我的纽扣 <asp:Button ID="Button3" runat="server" OnClick="Submit_Form" CssClass="btn btn-primary"
<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 markupOnClientClick=“if(Page\u ClientValidate)”中包含类似的内容(……
这是一个我尝试过的例子,它仍然卡在禁用按钮上,页面无法发布。唯一的问题是您要求我重写当前使用RequiredFieldValidator的所有30个字段的验证。我还不准备放弃这些。我一定会记住您的建议,作为最后的手段。谢谢您可以添加一个应用于所有三十个字段的类
,然后循环验证。
if(Page.IsPostBack)
{
btnSubmit.Enabled = false;
}