ASP.NET OnClick / OnClientClick - 如果禁用提交按钮,则会中断

时间:2016-06-29 12:36:18

标签: javascript asp.net button onclick onclientclick

我知道良好的工作JS验证功能(一直验证回OnClientClick)。当OnClientClick调用时,它们会检查是否已填充所有必填字段,禁用提交按钮,并将正确的true / false验证返回给OnClientClick。

问题在于禁用按钮。页面提交并重新加载,但不会触发OnClick事件。注明

document.getElementById("<%=btnSubmit.ClientID %>").disabled = true;

代码允许触发OnClick事件。

我试过插入

this.disabled=true;

直接进入OnClientClick,以及使用UseSubmitBehavior = false。

为什么禁用按钮时OnClick事件不会触发?

4 个答案:

答案 0 :(得分:0)

两件事:

1确保未设置“已禁用”属性。尝试通过

删除属性
document.getElementById("<%=btnSubmit.ClientID %>").removeAttribute('disabled');

如果您致电:

,则应该能够运行2次OnClick回复
var button = document.getElementById("<%=btnSubmit.ClientID %>");
window.location.href = button.getAttribute("href");

基本上它会强制浏览器发送请求,因为OnClick是服务器端方法。

答案 1 :(得分:0)

您可以使用包含onClick事件的div元素包装按钮。即使按钮本身被禁用,也应触发。唯一的缺点是您无法直接从代码隐藏中将事件分配给按钮。 从您的问题看,无论按钮是否启用,onClick事件应始终触发。

答案 2 :(得分:0)

我使用以下function Control_Enable(controlId, enable) { setTimeout(function () { var ctrl = document.getElementById(controlId); ctrl.disabled = !enable; }, 10); } 代码修复了问题,我在here发布的答案中找到了ConnorsFan

Id   TemplateId UserBodyId, EmployeeBodyId
1    1          1           Null
2    1          Null        Null  
3    2          4           Null
4    2          Null        5

答案 3 :(得分:0)

仅针对禁用字段添加

@Html.HiddenFor(model => model.Id)

,然后ViewModel将按预期进行拾取