这是我的代码:
<form name='frm' id='frm' action='load.asp' method='post' onSubmit='return OnSubmit(this)' style='margin-top:15px'>
<input type='submit' name='send' id='send' onclick="this.disabled=true;return true;" value='Send' title='test'>
</form>
我希望我的onsubmit函数能够被执行,我希望页面被提交。 在我的网站上,没有提交,也没有功能
我试图在这里复制它,但表单似乎已发布,我的功能永远不会被执行... http://jsfiddle.net/V7B3T/1/
我不知道何时应该重新激活该按钮。
我应该在document.ready或onSubmit函数中执行吗?
所以,如果有人可以修复小提琴:),之后我会将它与我的代码进行比较。 我想:S我迷路了
全部谢谢
答案 0 :(得分:15)
如果您想在提交之前验证表单或进行任何更改,并且只有在表单有效时才提交,您可以执行以下操作:
<form id="frm" action="load.asp" method="post" enctype="multipart/form-data">
<input type="submit" name="send" id="send" value="Send" title="test">
</form>
和JavaScript代码:
$('#frm').bind('submit', function (e) {
var button = $('#send');
// Disable the submit button while evaluating if the form should be submitted
button.prop('disabled', true);
var valid = true;
// Do stuff (validations, etc) here and set
// "valid" to false if the validation fails
if (!valid) {
// Prevent form from submitting if validation failed
e.preventDefault();
// Reactivate the button if the form was not submitted
button.prop('disabled', false);
}
});
这是一个有效的fiddle。
答案 1 :(得分:5)
我肯定会将该代码移动到它所属的外部JS(和CSS)文件中,但这应该可行:
onclick="this.disabled=true;this.parentNode.submit();"
由于您正在禁用提交按钮,因此一旦实际的表单提交单击发生,它将被禁用(在此之前发生onclick)。使用JS提交表单应该可以解决问题。
编辑:关于重新启用按钮,我必须在OnSubmit()
函数运行后发生。
答案 2 :(得分:5)
如果您的表单确实进行了回发,那么您实际上是在更改页面,因此无需担心重新启用按钮(一旦页面加载就会发生这种情况)。
此外,既然您正在使用jQuery,那么您也可以正确使用它并通过使用jQuery函数附加事件处理程序来分离HTML标记和Javascript,而不是onclick
,onsubmit
, HTML元素上的etc属性。
更新了HTML:
<form name='frm' id='frm' action='http://jsfiddle.net/' enctype='multipart/form-data' method='post' style='margin-top:15px'>
<input type='submit' name='send' id='send' value='Send' title='test'>
</form>
更新了Javascript:
function submitForm(form) {
alert("submitted");
}
$('#send').click(function(e) {
this.disabled = true;
});
$('#frm').submit(function(e) {
submitForm(this);
});
你需要将它包装在$(document).ready(function() {...});
调用中以便在实际页面上使用 - 我把它留下了,因为jsFiddle无论如何都会执行任何提供的Javascript onLoad。
答案 3 :(得分:0)
如果你不想提交这个页面,这应该可以解决问题:
onclick="this.disabled=true;return false;"