Jquery:在表单提交验证然后允许默认操作继续

问题描述 投票:0回答:3

想知道,有没有办法在preventDefault和验证表单字段后使表单执行默认操作。

$('#form').submit(function (e) { 
   e.preventDefault();
   var isValid = true;
   var name   = $('#name').val();

   if (empty(name)) {
     isValid = false;
   }

   $(this).submit() // This will cause a stack overflow :)

});

完成表单验证后,我想正常进行,

我想在提交按钮上使用onClick,但用户可以通过按Enter键来触发提交,我想允许。我想这样做的原因是服务器可以执行重定向等操作。

javascript jquery forms validation
3个回答
1
投票

而不是使用preventDefault,你可以在函数的末尾return true

如果你想阻止提交,你可以return false

这是使用您的代码的示例。如果您尝试使用空字段提交表单,则不会提交。如果填写该字段,它将:

$("#form").submit(function() {
  var name = $("#name").val();

  if (!name) {
    $(".form-group").addClass("has-danger");
    alert("Field is blank. Submit will be prevented.");
    return false; // no submission
  }

  alert("Field is filled. The form will submit.");
  return true; // form submits
});
<link href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.0.0-alpha.6/css/bootstrap.min.css" rel="stylesheet" />
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>


<form id='form'>
  <div class="form-group">
    <label class="form-control-label" for="name">Name</label>
    <input type="text" class="form-control" id="name">
  </div>
  <button type="submit" class="btn btn-primary">Submit</button>
</form>

CodePen Demo


0
投票

检查它是否有效。我测试了它。

$(document).ready(function(){

$('#form1').submit(function (e) { 

  if($('#name').val() == ''){
     alert('Name is empty');
     return false;
  }

  $(this).submit();
});

});

0
投票

我给你写了一个小例子。

$(document).ready(function(){
    $("#control_form").on("keyup", function(event){
        post_control();
    });
});
var post_control = function(){
    var user_name = $("#user_name").val();
  
    if ( user_name==null || user_name=="" || user_name.length < 4 )
        $('.error').html("Username can not be less than 4 characters!");
		
    else
    {
        $('.error').empty();
        $('#control_form').removeAttr('onsubmit');
    }
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.0.2/jquery.min.js"></script>
<div id="users_form">
    <form name="form" id="control_form" action="post_form" method="post" onsubmit="return false;">
        <label>User Name:</label>
        <input type="text" id="user_name" name="user_name">
        <input type="submit" value="Save">
    </form>
    <div class="error"></div>  
</div>
© www.soinside.com 2019 - 2024. All rights reserved.