简体   繁体   English

即使使用了preventDefault之后,表单仍被提交

[英]Form getting submitted even after using preventDefault

I am submitting a form in ajax. 我正在用ajax提交表单。 I used certain validation for input format like time and phone no validation etc. But it submits the form after validation. 我对输入格式使用了某些验证,例如时间和电话无验证等。但是它在验证后提交了表单。 I did use preventDefault() to prevent form submission but it doesn't work. 我确实使用了preventDefault()来阻止表单提交,但是它不起作用。

$("#sche_inter_form").submit(function(e) {
  if ($("#inter_name").val() === "") {
    $("#inter_name").css({
      "border-bottom": " 1px solid #dd4b39"
    });
    e.preventDefault();
  }

  if (($("#inter_date").val() === "") || (!(/^(0[1-9]|1[012])[- /.](0[1-9]|[12][0-9]|3[01])[- /.](19|20)\d\d+$/).test($("#inter_date").val()))) {
    $("#inter_date").css({
      "border-bottom": " 1px solid #dd4b39"
    });
    e.preventDefault();
  }

  if (($("#inter_hr").val() === "") || (!(/^((0?[1-9])|(1[0-2]))(:|\s)([0-5][0-9])$/).test($("#inter_hr").val()))) {
    $("#inter_hr").css({
      "border-bottom": " 1px solid #dd4b39"
    });
    e.preventDefault();
  }

  if ($("#inter_mr").val() === "") {
    $("#inter_mr").css({
      "border-bottom": " 1px solid #dd4b39"
    });
    e.preventDefault();
  }
  e.preventDefault();
  var candidate_id = $('#candidate_id').val();
  var profile_id = $('#profile_id').val();

  var date, time, inter_name, meridian, dataString;
  var inter_name = $('#inter_name').val();
  var date = $('#inter_date').val();
  var time = $('#inter_hr').val();
  var meridian = $('#inter_mr').val();
  var dataString = 'inter_name=' + inter_name + '&inter_date=' + date + '&inter_time=' + time + '&inter_meridian=' + meridian + '&candidate_id=' + candidate_id + '&profile_id=' + profile_id;
  $.ajax({

    type: "POST",
    url: "/schedule_interview",
    headers: {
      'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
    },
    data: dataString,
    cache: false,
    success: function(data) {
      alert("Interview Scheduled Successfully");
    }
  });
});

This is my form 这是我的表格

<form id = "sche_inter_form">
    <div class = "form-group">
        <input type = "text" id = "inter_name" placeholder = "Name of interviewer" required></input>
    </div>

    <div class = "form-group">
        <b><p id = "schedule_text">Interview Schedule session</p></b>
    </div>

    <input type="hidden" id="candidate_id"/>
    <input type="hidden" id="profile_id"/>

    <div class = "form-group form-inline">
        <input type = "text" id = "inter_date" placeholder = "dd/mm/yyyy" required></input>
        <input type = "text" id = "inter_hr"   placeholder = "hh:mm" required></input>
        <input type = "text" id = "inter_mr" placeholder = "AM/PM" required></input>
    </div>

    <div class = "form-group">
        <input type = "submit" class ="btn btn-primary" value = "Schedule"></input>
    </div>



</form>

You have to prevent default behavior of submit button. 您必须防止“提交”按钮的默认行为。 Try with below code 尝试以下代码

$("#sche_inter_form").submit(function(e){

replace with 用。。。来代替

$(".btn-primary").click(function(e){

You can add 'id' attribute to your submit button and use in above code instead of 'class'. 您可以在“提交”按钮中添加“ id”属性,并在上面的代码中代替“ class”使用。

inputs don't need closing tag. inputs不需要结束标记。 Remove </input> from your html and use e.preventDefault(); 从您的html中删除</input>并使用e.preventDefault(); only once. 只有一次。 If you want to prevent form submit in some condition use return false 如果要防止表单在某种情况下提交,请使用return false

 $("#sche_inter_form").submit(function(e) { e.preventDefault(); if ($("#inter_name").val() === "") { $("#inter_name").css({ "border-bottom": " 1px solid #dd4b39" }); } if (($("#inter_date").val() === "") || (!(/^(0[1-9]|1[012])[- /.](0[1-9]|[12][0-9]|3[01])[- /.](19|20)\\d\\d+$/).test($("#inter_date").val()))) { $("#inter_date").css({ "border-bottom": " 1px solid #dd4b39" }); } if (($("#inter_hr").val() === "") || (!(/^((0?[1-9])|(1[0-2]))(:|\\s)([0-5][0-9])$/).test($("#inter_hr").val()))) { $("#inter_hr").css({ "border-bottom": " 1px solid #dd4b39" }); } if ($("#inter_mr").val() === "") { $("#inter_mr").css({ "border-bottom": " 1px solid #dd4b39" }); } var candidate_id = $('#candidate_id').val(); var profile_id = $('#profile_id').val(); var date, time, inter_name, meridian, dataString; var inter_name = $('#inter_name').val(); var date = $('#inter_date').val(); var time = $('#inter_hr').val(); var meridian = $('#inter_mr').val(); var dataString = 'inter_name=' + inter_name + '&inter_date=' + date + '&inter_time=' + time + '&inter_meridian=' + meridian + '&candidate_id=' + candidate_id + '&profile_id=' + profile_id; $.ajax({ type: "POST", url: "/schedule_interview", headers: { 'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content') }, data: dataString, cache: false, success: function(data) { alert("Interview Scheduled Successfully"); } }); }); 
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js"></script> <form id="sche_inter_form"> <div class="form-group"> <input type="text" id="inter_name" placeholder="Name of interviewer" required> </div> <div class="form-group"> <b><p id = "schedule_text">Interview Schedule session</p></b> </div> <input type="hidden" id="candidate_id" /> <input type="hidden" id="profile_id" /> <div class="form-group form-inline"> <input type="text" id="inter_date" placeholder="dd/mm/yyyy" required> <input type="text" id="inter_hr" placeholder="hh:mm" required> <input type="text" id="inter_mr" placeholder="AM/PM" required> </div> <div class="form-group"> <input type="submit" class="btn btn-primary" value="Schedule"> </div> </form> 

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM