只有当foo返回true时,我才需要一种方法来提交表单。我尝试过此代码,但即使foo返回false,它也会提交表单。
<input type="submit" value="submit" onclick="return foo();" />
<script type="text/javascript">
function foo() {
// if... return true
// else return false
}
</script>如果我使用onsubmit函数,那么它会首先提交。所以这对我来说并不好。
发布于 2015-07-25 14:02:36
您可以尝试使用jquery ajax提交的替代方法,如下所示,我正在使用它,可能对您也有帮助。
var request;
$("#YourFormId").submit(function(event){
if(yourFunction()==false) {
return false;
}
if (request) {
request.abort();
}
var $form = $(this);
var $inputs = $form.find("input, select, button, textarea");
var serializedData = $form.serialize();
$inputs.prop("disabled", true);
request = $.ajax({
url: "yourFormActionPage.php",
type: "post",
data: serializedData
});
request.done(function (response, textStatus, jqXHR){
//ok
});
request.fail(function (jqXHR, textStatus, errorThrown){
//track it
});
request.always(function () {
$inputs.prop("disabled", false);
});
event.preventDefault();
});发布于 2015-07-25 13:30:33
一种可能的解决方案是使用表单的提交事件。您可以将条件放在submit事件处理程序中,这样当foo()没有返回true时,提交就会停止。
(注意:我不得不猜测表单的选择器可能是什么,因为这不是您问题的一部分)
document.getElementById('myForm').submit(function(e) {
if (!foo()) {
e.preventDefault();
}
})发布于 2015-07-25 13:57:18
您可以使用ajax提交。
<form class="formbox" method="post" action="/your/action/url" id="myForm" name="myForm">
<input type="text" id="name" class="name" name="name" value=""/>
<input type="submit" value="submit" onclick="return foo();" />
</form>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
<script type="text/javascript">
function foo() {
if(1==1) {
alert("Success: Going to call the function");
$("#myForm").submit(); //calling function.
} else {
alert("Error: ");
}
}
https://stackoverflow.com/questions/31623253
复制相似问题