我正在尝试仅在按下提交按钮时设置function
(将提交的变量的整数值设置为1),但是我在控制台中收到此错误并且函数isn'在变量设置为1后运行:
未捕获的ReferenceError:未定义提交
$("form#form1").submit(function(event) {
event.preventDefault();
var submitted = 1; // set the integer value of the variable submitted to 1
});
if (submitted == 1) { // if the integer value of the varialbe is 1
// run a function
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<form id="form1">
<input type="submit">
</form>
答案 0 :(得分:2)
有两个问题:
submitted
是您submit
处理程序的本地代码,因为您在处理函数中声明了它,因此无法在其外部访问它。
如果我们只修复#1,那么当if
仍然具有我们在#1中提供的初始值时,您的submitted
语句将会运行,它不会是来自submit
处理程序,因为该处理程序尚未运行。相反,需要运行该代码以响应某些事件,因此 if 它在响应时运行的事件是在提交之后。
仅举例说明,这是一个通过点击按钮运行if
的示例:
var submitted = 0;
$("form#form1").submit(function(event) {
event.preventDefault();
submitted = 1; // set the integer value of the variable submitted to 1
});
$("#btn").on("click", function() {
if (submitted == 1) {
$("<p>Submitted</p>").appendTo(document.body);
} else {
$("<p>Not yet submitted</p>").appendTo(document.body);
}
});
Live on jsFiddle (Stack Snippets不允许提交表单,甚至不会取消提交。)
答案 1 :(得分:1)
您应该在提交操作的回调中直接调用函数:
$("form#form1").submit(function(event) {
event.preventDefault();
// run a function here
});
这样,在提交表单后立即调用该函数。
答案 2 :(得分:-1)
您的变量本地作用于提交函数。从一开始就将其设置为0,然后在提交表单时更改它。您必须对变量进行全局范围。
编辑:评论是正确的。我没有花一点时间来思考这个问题。我不确定,但我认为jQuery的提交处理程序只能在提交时运行,并且没有成功/错误处理函数;所以我要么使用不同的函数来处理它,要么只是将你的函数放在提交回调中,而不用担心submitted
变量。