Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/413.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 返回false不阻止表单提交_Javascript_Jquery - Fatal编程技术网

Javascript 返回false不阻止表单提交

Javascript 返回false不阻止表单提交,javascript,jquery,Javascript,Jquery,我正在尝试使用$验证字段。获取请求。我可以看到错误消息(“计划已存在”),但表单正在提交。我想阻止表单提交。这是我的密码: $("#add_plan_subscriptions").submit(function(event) { var flag = true; var subdomain_val = $('[name="plan[subdomain_type_id]"]').val(); var plan_val = $('[name="plan[plan_type_

我正在尝试使用
$验证字段。获取
请求。我可以看到错误消息(“计划已存在”),但表单正在提交。我想阻止表单提交。这是我的密码:

$("#add_plan_subscriptions").submit(function(event) {
    var flag = true;
    var subdomain_val = $('[name="plan[subdomain_type_id]"]').val();
    var plan_val = $('[name="plan[plan_type_id]"]').val();
    var plan_name = $('[name="plan[plan_name]"]').val();
    var subdomain_type_id = subdomain_val;
    var plan_name = $('[name="plan[plan_name]"]').val();
    $.get("/plans/check_duplicate_plan",{subdomain_type_id: subdomain_type_id, plan_name: plan_name}, function (response) {
      if (response){
        event.preventDefault() ;
        var element = $('[name="plan[plan_name]"]');
        var message = "Plan already present";
        addError(element,message)
        return false;
      }
      else{
        var element = $('[name="plan[plan_name]"]');
        removeError(element)
      }
    })
    if(subdomain_val == ""){
      var element = $('[name="plan[subdomain_type_id]"]')
      var message = "Please select user type"
      addError(element,message)
      flag = false;
    } 
    if(subdomain_val != ""){
      var element = $('[name="plan[subdomain_type_id]"]')
      removeError(element)
    }
    if(plan_val == ""){
      var element = $('[name="plan[plan_type_id]"]')
      var message = "Please select plan type"
      addError(element,message)
      flag = false;
    } 
    if(plan_val != ""){
      var element = $('[name="plan[plan_type_id]"]')
      removeError(element)
    }
    if (!flag){
      event.preventDefault();
      return false;
    }
    return true;
});

只有在有响应或子域时才阻止表单提交。您需要在事件回调的顶部添加
event.preventDefault()

$("#add_plan_subscriptions").submit(function(event) {
    event.preventDefault();
    var flag = true;

现在
$。在
get
的响应调用表单提交函数之前,get
async
模式调用。 因此,在
sync
模式下使用
ajax
,而不是
$。获取

            $.ajax({
                url: '/plans/check_duplicate_plan',
                data: { subdomain_type_id: subdomain_type_id, plan_name: plan_name},
                dataType: 'json',
                async:false,
                type: 'GET',
                success: function (response) {
                    if (response){
                       event.preventDefault() ;
                       var element = $('[name="plan[plan_name]"]');
                       var message = "Plan already present";
                       addError(element,message)
                       return false;
                    }
                    else{
                        var element = $('[name="plan[plan_name]"]');
                        removeError(element)
                    }
                }
            })
步骤: 1.将输入类型更改为提交按钮类型 2.添加此行,而不是在javascript中返回true

 document.forms["signup"].submit();
我也有类似的问题。考虑一下这样的HTML…< /P>
提交表单的原因是,在您发布表单的最后两行代码中,您返回true

使其返回false

您发布的最后两行代码如下所示

return true;
});
 return false;
});
而是让它像这样

return true;
});
 return false;
});

并尝试删除您的返回值true;并将其替换为event.preventDefault()

删除您的
事件.preventDefault()
在$.get函数中,并添加
事件.preventDefault()
返回false

基于jquery文档 event.preventedfautl();则不会触发事件的默认操作

因此,我们称此方法为“提交”函数将停止触发默认操作


希望这有助于您理解:)

这是因为
$中的
返回false
。get
是从您的匿名函数返回的,而不是
提交
处理程序。提交后您是否尝试过查看控制台?不推荐,最新版本的jQuery甚至已从
$中退出同步模式。ajax()