为 ASP:NET 网络表单按钮启用或禁用 [=12=] 的 e.preventDefault
enable or disable e.preventDefault of javascript for ASP:NET webform button
我正在开发 ASP.NET 3.5 webform 应用程序。我在网络表单中有提交按钮
<cc1:FlatButton ID="btnSubmit" runat="server" class="positive" Text="Submit Assessment" OnClick="btnSubmit_Click" RemoveDiv="True" />
调用 OnClick="btnSubmit_Click 代码隐藏。
protected void btnSubmit_Click(object sender, EventArgs e)
{
....
现在我有额外的要求,提供消息框,即当用户点击上面的提交按钮时出现的警报,并基于用户选项 selection,是否提交表单
我的问题是如何防止基于用户 selection 调用代码隐藏 btnSubmit_Click 事件,即当用户 select 没有其他携带时 e.preventDefault()待命 btnSubmit_Click
下面的代码不会停止调用服务器代码,因为我在流程的后期调用 e.preventDefault()。
有什么方法可以实现暂停服务器调用???
JQuery代码
$(document).ready(function () {
createDialogElements();
$("#ctl00_ContentArea_btnSubmit").click(function (e) {
$("#WindowMessageDialog").jqxWindow('open');
$("#messageDialog_btn_no").click(function () {
alert("answer is no");
e.preventDefault();
});
$("#messageDialog_btn_yes").click(function () {
alert("answer is yes");
});
});
您可以将 OnClientClick
属性 用于 asp.net 中的服务器控件。
问题是,当你点击提交按钮时,会触发OnClientClick
中定义的函数,其结果必须为true或false,才能继续或取消提交。
在您的示例中,您正在打开一个对话框并等待用户点击,但 javascript 不会停止等待用户的操作。
如果是javascript中的简单验证,比如必填字段,或者任何期望值都会很简单。
有一些解决办法。我能想到的最简单(但不是更好)的方法是创建一个变量来控制您的表单是否可以提交。当您单击提交时,它会调用一个 javascript 函数来打开您的对话框,并且 return false,因此不会提交表单。
当对话框关闭时,如果表单有效,它将提交表单。
试试这个,在点击时设置客户端功能:
<cc1:FlatButton ID="btnSubmit" runat="server" class="positive" Text="Submit Assessment" OnClick="btnSubmit_Click" OnClientClick="if (validForSubmit) return true; else return validateForm();" RemoveDiv="True" />
并用此 Javascript 函数替换您的 jQuery 代码:
var validForSubmit = false;
function validateForm() {
$("#WindowMessageDialog").jqxWindow('open');
$("#messageDialog_btn_no").click(function () {
alert("answer is no");
return false;
});
$("#messageDialog_btn_yes").click(function () {
alert("answer is yes");
// set form as valid for submit
validForSubmit = true;
// fire the click, because the form is now valid
$("#ctl00_ContentArea_btnSubmit").click();
return true;
});
return false;
}
您可能需要修复一些东西,但这是我的想法,希望对您有所帮助。
我正在开发 ASP.NET 3.5 webform 应用程序。我在网络表单中有提交按钮
<cc1:FlatButton ID="btnSubmit" runat="server" class="positive" Text="Submit Assessment" OnClick="btnSubmit_Click" RemoveDiv="True" />
调用 OnClick="btnSubmit_Click 代码隐藏。
protected void btnSubmit_Click(object sender, EventArgs e)
{
....
现在我有额外的要求,提供消息框,即当用户点击上面的提交按钮时出现的警报,并基于用户选项 selection,是否提交表单
我的问题是如何防止基于用户 selection 调用代码隐藏 btnSubmit_Click 事件,即当用户 select 没有其他携带时 e.preventDefault()待命 btnSubmit_Click
下面的代码不会停止调用服务器代码,因为我在流程的后期调用 e.preventDefault()。
有什么方法可以实现暂停服务器调用???
JQuery代码
$(document).ready(function () {
createDialogElements();
$("#ctl00_ContentArea_btnSubmit").click(function (e) {
$("#WindowMessageDialog").jqxWindow('open');
$("#messageDialog_btn_no").click(function () {
alert("answer is no");
e.preventDefault();
});
$("#messageDialog_btn_yes").click(function () {
alert("answer is yes");
});
});
您可以将 OnClientClick
属性 用于 asp.net 中的服务器控件。
问题是,当你点击提交按钮时,会触发OnClientClick
中定义的函数,其结果必须为true或false,才能继续或取消提交。
在您的示例中,您正在打开一个对话框并等待用户点击,但 javascript 不会停止等待用户的操作。
如果是javascript中的简单验证,比如必填字段,或者任何期望值都会很简单。
有一些解决办法。我能想到的最简单(但不是更好)的方法是创建一个变量来控制您的表单是否可以提交。当您单击提交时,它会调用一个 javascript 函数来打开您的对话框,并且 return false,因此不会提交表单。
当对话框关闭时,如果表单有效,它将提交表单。
试试这个,在点击时设置客户端功能:
<cc1:FlatButton ID="btnSubmit" runat="server" class="positive" Text="Submit Assessment" OnClick="btnSubmit_Click" OnClientClick="if (validForSubmit) return true; else return validateForm();" RemoveDiv="True" />
并用此 Javascript 函数替换您的 jQuery 代码:
var validForSubmit = false;
function validateForm() {
$("#WindowMessageDialog").jqxWindow('open');
$("#messageDialog_btn_no").click(function () {
alert("answer is no");
return false;
});
$("#messageDialog_btn_yes").click(function () {
alert("answer is yes");
// set form as valid for submit
validForSubmit = true;
// fire the click, because the form is now valid
$("#ctl00_ContentArea_btnSubmit").click();
return true;
});
return false;
}
您可能需要修复一些东西,但这是我的想法,希望对您有所帮助。