从客户端处理程序返回 false 不会阻止回发
Returning false from Client-Side Handler does not Prevent Postback
我在WebForms页面上有以下按钮:
<asp:Button ID="btnNewProgramNext" runat="server" Text="Next >>" />
我有以下javascript/jquery来处理它的事件。
$('#<%= btnNewProgramNext.ClientID %>').on('click', function (e) {
var errorMessage = '';
var ok = false;
var newCompany = $('#<%= NewCompanyMode.ClientID %>').val();
if (newCompany == 1) {
if (!$('#<%= txtProgramCompanyName.ClientID %>').val())
errorMessage = 'You must enter a company name.';
else if (!$('#<%= txtContactFirstName.ClientID %>').val())
errorMessage = 'You must enter a contact first name.';
else if (!$('#<%= txtContactLastName.ClientID %>').val())
errorMessage = 'You must enter a contact last name.';
else
ok = true;
}
else {
// Do something else
ok = true;
}
$('#newProgramErrorMessage').text(errorMessage);
return ok;
});
问题是,当此处理程序返回 false 时(当 ok
为 false 时,或者当我将最后一行更改为 return false
时),回发仍然会发生。
有什么技巧可以防止从javascript回发吗?我希望这能奏效。
你需要 e.preventDefault() 来取消按钮单击事件。
$('#<%= btnNewProgramNext.ClientID %>').on('click', function (e) {
var errorMessage = '';
var ok = false;
var newCompany = $('#<%= NewCompanyMode.ClientID %>').val();
if (newCompany == 1) {
if ($('#<%= txtProgramCompanyName.ClientID %>').val() == "")
errorMessage = 'You must enter a company name.';
else if ($('#<%= txtContactFirstName.ClientID %>').val() == "")
errorMessage = 'You must enter a contact first name.';
else if ($('#<%= txtContactLastName.ClientID %>').val() == "")
errorMessage = 'You must enter a contact last name.';
else
ok = true;
} else {
// Do something else
ok = true;
}
if (!ok) {
e.preventDefault();
$('#newProgramErrorMessage').text(errorMessage);
}
// else everything is valid, so post back to server.
});
为什么不尝试通过 ClientClick
属性连接它,而不是使用 jQuery 订阅点击事件。 这可能是 ASP.NET 用来确定是否终止回发的路由。
相关文章:
- 客户端服务器REST API captcha实现
- 使用谷歌应用程序脚本将服务器端数据表返回到客户端
- 如何使用Socket.io将命令从客户端发送到服务器
- 如何轻松地将服务器端变量从Java代码转移到客户端代码
- Meteor方法在客户端返回null,在客户端运行的相同方法返回正确的值
- 从客户端获取修改后的对象,并将其与服务器上的原始对象组合
- 如何将我的javascript库公开给其他客户端使用
- 是否可以使用JavaScript/AAJAX在客户端创建一个文件
- 如何使用Javascript客户端对象模型检索Sharepoint 2010列表项权限
- 返回/从Twit's客户端.get
- 将客户端特定的日期格式返回到服务器MVC4
- MobileFirst:在客户端运行计时器作业-最佳选项
- 标签客户端的设置值
- 我的客户端选项是什么
- Node.js上的WebSocket,并在所有连接的客户端之间共享消息
- 使用javascript在客户端上使用Web服务
- 通过ajax从客户端调用C#方法来执行C#方法
- SignalR客户端启动连接时如何设置用户
- 在使用客户端脚本时拾取JSON对象
- 从客户端处理程序返回 false 不会阻止回发