我有一个表单,其中有一个按钮可以提交表单。在提交之前我需要做一些事情。我尝试在那个按钮上使用onClick,但它发生在提交之后。
我无法分享代码,但通常来说,在jQuery或JS中应该怎么处理呢?
我无法分享代码,但通常来说,在jQuery或JS中应该怎么处理呢?
如果你有这样的一个表单:
<form id="myform">
...
</form>
您可以使用以下 jQuery 代码在表单提交前执行某些操作:$('#myform').submit(function() {
// DO STUFF...
return true; // return false to cancel form action
});
更新:对于较新版本的 JQuery(为了避免废弃警告),请尝试使用以下代码:
$('#myform').on('submit', function() {
// ...
return true;
});
$(document).ready()
函数的简称,可以确保DOM完成后再附加submit
事件。如果你的JS代码在页面底部,则不需要,但如果在<head>
部分,则需要。详见:https://dev59.com/rmcs5IYBdhLWcg3wMg-z - Dan Breen假设你有一个像这样的表单:
<form id="myForm" action="foo.php" method="post">
<input type="text" value="" />
<input type="submit" value="submit form" />
</form>
你可以像这样使用jQuery添加onsubmit
事件:
$('#myForm').submit(function() {
alert('Handler for .submit() called.');
return false;
});
如果你使用 return false
,则在函数执行后表单将不会被提交;如果你返回 true 或什么都不返回,则表单将像平常一样被提交。
有关更多信息,请参见jQuery 文档。
您可以使用onclick
在提交表单之前运行一些JavaScript或jQuery代码,如下所示:
<script type="text/javascript">
beforeSubmit = function(){
if (1 == 1){
//your before submit logic
}
$("#formid").submit();
}
</script>
<input type="button" value="Click" onclick="beforeSubmit();" />
<form id="formId" action="/" method="POST" onsubmit="prepareForm()">
<input type="text" value="" />
<input type="submit" value="Submit" />
</form>
Javascript文件:
function prepareForm(event) {
event.preventDefault();
// Do something you need
document.getElementById("formId").requestSubmit();
}
注意:如果你需要支持Safari浏览器(很可能需要),你需要引入一个用于requestSubmit()
的填充库
确保提交按钮不是“submit”类型,将其设置为按键。然后使用onclick事件触发一些JavaScript。在此之前,您可以在实际发布数据之前执行任何操作。
onsubmit
绑定到表单,这样无论以何种方式提交表单都会触发它。 - Jasontype="submit"
的onClick
会被任何最终导致form.submit()操作的行为触发。在Firefox、Chrome和Brave上,通过在输入字段上按Enter键可以实现此功能。谁知道十年前是否也是这样。 - HoldOffHunger<form id="deleteForm" action="/post/delete" method="post">
<input type="text" value="2133" />
<input type="submit" value="Delete" />
</form>
和你的 JavaScript:
<script>
let deleteForm = document.getElementById('deleteForm');
deleteForm.addEventListener('submit', function(e) {
e.preventDefault();
if (confirm('Are you sure?')) {
deleteForm.submit();
}
});
});
</script>
<form name="myForm" action="/action_page.php" onsubmit="return validateForm()" method="post">...
使用'onsubmit'。 - Manatax