仅在页面有效时禁用提交按钮
问题描述:
我无法获得此功能以适应我的生活。我需要提交按钮才能在所有验证完成后禁用,然后让页面发布到OnClick函数。仅在页面有效时禁用提交按钮
我有一个填充RequiredFieldValidators和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>
我试图阻止用户提交表单两次。按钮应该在用户点击它之前禁用,然后再将它们带到下一页。
答
那么,我经常使用Javascript库Valid 8。节省一些时间验证,否则我会做什么会是这样的(原始例):
<asp:LinkButton
Id="btnSubmit" runat="server"
Text="Submit" CssClass="btn btn-Primary"
OnClientClick="return Submit()" />
当按钮被点击时,它会调用我们的功能Submit
。
function Submit() {
var value = $("#txtField").Val();
if(value != '') {
if(!confirm("Are you sure you would like to submit?")) {
return false;
} else {
return true;
// Be aware Link Button can have issue in Asp.Net sometimes.
}
}
因此验证发生在客户端上。现在,你只要把这个在您的Page_Load
:
btnSubmit.Click = new EventHandler("btnSubmit_Click");
然后把为Postback
的数据btnSubmit_Click
像这样:
protected void btnSubmit_Click(object sender, EventArgs e)
{
// Do Something.
}
这就是我会做,主要是为了避免不必要的Postbacks
的办法。请记住我的Javascript例子是相当原始的,只是确保它不是null
。
刚刚看了你希望避免多个提交,你可以做一个Session Variable
避免它或者干脆:
if(Page.IsPostBack)
{
btnSubmit.Enabled = false;
}
这将去一个Page_Load
。显然任何Postback
虽然会立即禁用按钮。所以你可能想在实际实现之前确保在你的实现中起作用。
你说这个不正确..?你的意思是你想让按钮被禁用,直到所有必填字段被填充/或验证..?你可否确认..? – MethodMan 2014-10-21 21:45:06
不,相反,我希望按钮处于活动状态,并且一旦填写了所有必填字段,并且用户点击了提交按钮,就会禁用它,以防止他们提交表单两次。 – techora 2014-10-21 21:50:24
你需要在asp里面有这样的内容:按钮标记 'OnClientClick =“if(Page_ClientValidate(......'这里是一个例子http://*.com/questions/14490556/disable-webform -button-after-validation-before-postback – MethodMan 2014-10-21 21:54:17