检查字段有效性和提交前填写的字段?

Posted

技术标签:

【中文标题】检查字段有效性和提交前填写的字段?【英文标题】:Check Field Validity and Fields Filled Before Submission? 【发布时间】:2021-04-11 04:53:13 【问题描述】:

我正在修改这个问题,因为我已经改变了。

我有一个包含几个字段的表单,其中三个具有regex 验证。我还有一个功能可以检查在启用submit 按钮之前是否填写了所有字段,这很好用。但是,如果字段已填写但invalid 字段无效,我仍然可以提交表单。我想知道是否可以合并我的函数,以便在启用提交按钮之前检查字段是否已填写和valid

我尝试添加一个额外的 && 子句,但这不起作用,我尝试实现 jQuery 验证插件,但它似乎非常有限,我无法使用它验证邮政编码。

这是我的项目的简化版本:

// ~~~ postcode validation

function validatePostcode(postcode) 
  var pcode = /^[a-zA-Z]1,2[0-9][0-9A-Za-z]0,1 0,1[0-9][A-Za-z]2$/;
  return pcode.test(postcode);


function validateP() 
  var postcode = $("#postcode").val();

  if (validatePostcode(postcode)) 
    $("#postcode").removeClass("is-invalid");
    return true;
   else 
    alert('Please enter a valid postcode');
    $("#postcode").addClass("is-invalid");
  
  return false;


// ~~~ validate if form is filled completely, toggles submit & edit button

$(document).on('change keyup invalid', '.required', function(e) 
  var disabled = true;

  $(".required").each(function() 
    var value = this.value;

    if ((value) && (value.trim() != '')) 
      disabled = false;
      $('.toggle-disabled').prop("disabled", false);
     else 
      disabled = true;
      $('.toggle-disabled').prop("disabled", true);
      return false;
    
  );


);
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.0-beta1/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-giJF6kkoqNQ00vy+HMDP7azOuL0xtbfIcaT9wjKHr8RbDVddVHyTfAAsrekwKmP1" crossorigin="anonymous">
<div class="col-md-6">
  <input type="text" id="postcode" class="input postcode form-control required" onchange="validateP()" placeholder="Post Code" name="postcode" required>
</div>
<div class="col-md-6">
  <input id="submit" class="btn btn-danger toggle-disabled" type="submit" value="Submit" disabled>
</div>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>

【问题讨论】:

jQuery 验证插件可以完成您需要做的所有事情,只需最少的自定义编码。我建议你试试这个,而不是自己写所有的代码。 我已经尝试过了,它对我也不起作用,仍然让我提交表单 我试图实现它,但它不允许我做我需要做的所有验证,我只想继续我现在拥有的东西,因为我的项目很快就要到期了。但我会进一步调查@user1751825 jQuery validate 支持您可能需要的任何类型的验证。它是完全可定制的。 【参考方案1】:

使用下面的正则表达式:

/^([0-9a-zA-Z\-\._]+)@([0-9a-zA-Z\-\._]+)\.([a-zA-Z])2,7$/

【讨论】:

这不是问题的答案。这只是一个稍微不正确的电子邮件正则表达式。

以上是关于检查字段有效性和提交前填写的字段?的主要内容,如果未能解决你的问题,请参考以下文章

在重置JSF + PrimeFaces中的表单之前,检查一些必需的输入字段

退出表单前访问必填字段

单击angularjs中的提交表单时如何删除“请填写此字段”弹出但其他验证应该有效

PHP - 检查是不是填写了两个表单字段之一?

必须填写两个文本字段之一

检查是不是所有必填字段都填写在特定的 div 中