【发布时间】:2013-07-29 00:57:53
【问题描述】:
我想在回发之前禁用页面上的所有提交按钮。找到 3 个(稍微)不同的代码示例,但没有一个在我的场景中有效。
<script src="js/jquery-1.6.1.min.js" type="text/javascript"></script>
<script type="text/javascript">
$(document).ready(new function () {
//debugger;
// 1
$('#form1').one('submit', function () {
alert('.one');
$(this).find('input[type="submit"]').attr('disabled', 'disabled');
});
// 2
$("#form1").submit(function () {
alert('.submit1');
$('input[type=submit]').click(function () { return false; });
});
// 3
$("#form1").submit(function () {
alert('.submit2');
$('input[type=submit]').click(false);
});
});
</script>
HTML(来自查看源代码):
<body>
<form method="post" action="WebForm12.aspx" id="form1">
<div class="aspNetHidden">
<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="/wEPDwUKMjA0OTM4MTAwNGRk6dbofDK5YUWMwPmdBDnRWPCTyBN22BpAo7Y3C+2Gycs=" />
</div>
<div class="aspNetHidden">
<input type="hidden" name="__EVENTVALIDATION" id="__EVENTVALIDATION" value="/wEWAgKC36LkAgKr4aeRA6gaPoGNYlZvnjW07iB+LnlhIUr0qrTFHOADKmQQuhv0" />
</div>
<div>
<input type="submit" name="btnPost" value="Post" id="btnPost" />
</div>
</form>
</body>
更新
嗯,正如 putvande 所指出的,实际问题是定义就绪事件函数时的 new 关键字。但是,代码示例仍然没有达到目标。
示例 1 实际上并没有运行相关的 OnClick 处理程序,因为它没有将按钮的值回传到服务器,因为它被禁用了。
示例 2/3 一次阻止了后续回发,但在 UI 上保持启用按钮。
进一步搜索最终找到了更合适的技术来解决问题。下面的代码使用 onbeforeunload 事件完美禁用提交按钮。
window.onbeforeunload = DisableButtons;
function DisableButtons() {
$("input[type=submit]").attr('disabled', 'disabled');
}
【问题讨论】:
-
我不认为您的第一个示例会起作用,因为您使用的是旧版本的 jQuery。但是你想做什么?点击提交按钮后,您想禁用提交按钮吗?
-
@putvande 是的。以避免在回发过程中重新提交。
-
虽然它实际上并没有到达
alerts -
您是否同时在代码中使用了所有 3 个示例?我认为第一个 (
$('#form1').one('submit'...) 会给你一个错误,对吧? -
一次使用一个。没有错误。什么都没发生。即使它没有到达警报。
标签: jquery asp.net submit postback