Javascript 未捕获引用错误:未定义提交

Javascript 未捕获引用错误:未定义提交,javascript,jquery,html,Javascript,Jquery,Html,仅当按下提交按钮(将提交变量的整数值设置为1)时,我才尝试运行函数,但我在控制台中收到此错误,并且在变量设置为1后,函数未运行: 未捕获引用错误:未定义提交 $(“表单#表单1”)。提交(功能(事件){ event.preventDefault(); var submitted=1;//将提交的变量的整数值设置为1 }); if(submitted==1){//如果变量的整数值为1 //运行函数 } 您的变量在本地的作用域是submit函数。从一开始就将其设置为0,然后在提交表单时对其进行更改

仅当按下提交按钮(将提交变量的整数值设置为1)时,我才尝试运行
函数
,但我在控制台中收到此错误,并且在变量设置为1后,函数未运行:

未捕获引用错误:未定义提交

$(“表单#表单1”)。提交(功能(事件){
event.preventDefault();
var submitted=1;//将提交的变量的整数值设置为1
});
if(submitted==1){//如果变量的整数值为1
//运行函数
}

您的变量在本地的作用域是submit函数。从一开始就将其设置为0,然后在提交表单时对其进行更改。您必须对变量进行全局范围限定


编辑:评论是正确的。我没花一分钟去想这个。我不确定,但我认为jQuery的提交处理程序只在提交时运行,没有成功/错误处理程序函数;因此,我要么使用另一个函数来处理它,要么将您的函数放在submit回调函数中,根本不用担心
submitted
变量。

有两个问题:

  • submitted
    对于您的
    submit
    处理程序是本地的,因为您在处理程序函数中声明了它,所以在处理程序之外无法访问它

  • 如果我们只是修复#1,当
    submitted
    仍然具有我们在#1中给出的初始值时,您的
    If
    语句将运行,它将不是
    submit
    处理程序中的值,因为该处理程序尚未运行。相反,该代码需要运行以响应某个事件,这样,如果它运行以响应的事件是在提交之后

  • 下面是一个通过单击按钮运行
    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);
      }
    });
    
    var提交=0;
    $(“表格#表格1”)。提交(功能(事件){
    event.preventDefault();
    submitted=1;//将提交的变量的整数值设置为1
    });
    $(“#btn”)。在(“单击”,函数(){
    如果(提交==1){
    $(“已提交”

    ”)。附录(document.body); }否则{ $(“尚未提交”

    ”).appendTo(document.body); } });

    (堆栈代码段不允许表单提交,甚至不允许取消表单提交。)

    您应该将对函数的调用放在提交操作的回调中:

    $("form#form1").submit(function(event) {
      event.preventDefault();
      // run a function here
    });
    

    这样,函数将在表单提交后立即调用。

    submitted==1
    将始终为false,因为
    submit
    事件将在该代码块提交后才会运行。@code请参阅您提供的信息无法回答该问题。你是想确保他们不能多次提交表格,还是想做其他事情?他们是正确的。这就是我在早餐前快速回答一个问题,并且只纠正我看到的第一件事所得到的结果……你到底想什么时候运行这个函数?如果您想在按下submit按钮时运行它,只需在submit事件中调用它。