我知道良好的工作JS验证功能(一直验证回OnClientClick)。当OnClientClick调用时,它们会检查是否已填充所有必填字段,禁用提交按钮,并将正确的true / false验证返回给OnClientClick。
问题在于禁用按钮。页面提交并重新加载,但不会触发OnClick事件。注明
document.getElementById("<%=btnSubmit.ClientID %>").disabled = true;
代码允许触发OnClick事件。
我试过插入
this.disabled=true;
直接进入OnClientClick,以及使用UseSubmitBehavior = false。
为什么禁用按钮时OnClick事件不会触发?
答案 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将按预期进行拾取