Javascript jquery必填字段验证程序问题

Javascript jquery必填字段验证程序问题,javascript,jquery,forms,validation,filter,Javascript,Jquery,Forms,Validation,Filter,我有一个包含多个输入字段和一个选择字段的表单。对于多个字段,我有一个required属性。我已经创建了一个验证代码段,它应该检查所有必需的字段,并在字段为空时显示一条消息 然而,问题是,它只在第一个输入字段为空时工作。我希望得到一个暗示 函数的代码: function lisa_a() { //validator var req = $(":input[required]").val(); var reqfield = $(":input[required]"); if (re

我有一个包含多个输入字段和一个选择字段的表单。对于多个字段,我有一个required属性。我已经创建了一个验证代码段,它应该检查所有必需的字段,并在字段为空时显示一条消息

然而,问题是,它只在第一个输入字段为空时工作。我希望得到一个暗示

函数的代码:

function lisa_a() {
  //validator
  var req = $(":input[required]").val(); 
  var reqfield = $(":input[required]");
  if (req == ""){  
  $(".error").remove();
  var reqtxt = "<span class='error'>Nõutud</span>";

  reqfield.each(function(){
    $(this).after(reqtxt);
  });

  $("div#status").html("Please fill...");
  //validator
  }else{
  var data = $("form#lisa_a_vorm").serialize();
  $.ajax({
        url : "/var_dump.php", //for testing
        method: "POST",
        data : data,
        success:function(data) {
            $("div#status").html(data);
        }
    });
    $("form#lisa_a_vorm :input").each(function(){
    $(this).val('');
  });
  $(".error").remove();
}
}
编辑:

搜索了更多内容并发现。筛选在字段中循环。调整了我的代码:

function lisa_a() {
  //validator  
  var emptyfields = $(":input[required]").filter(function(){
    return $.trim($(this).val()).length === 0;
  }).length > 0;

  $(".error").remove();
  if (emptyfields){
      $(":input[required]").after("<span class='error'>Nõutud</span>");
      $("div#status").html("Palun täida kõik nõutud väljad!");
    }else{
      var data = $("form#lisa_a_vorm").serialize();
      $.ajax({
        url : "/wp-content/themes/origin/TCDB/php/var_dump.php",
        method: "POST",
        data : data,
        success:function(data) {
            $("div#status").html(data);
        }
      });
      $("form#lisa_a_vorm :input").each(function(){
        $(this).val('');
      });
      $(".error").remove();
    }
}
我不太明白,它并不完美。过滤器基础。如果我说filter函数返回值为0的经过修剪的必需输入字段的数目,这意味着它们是空的,那么我是否正确。如果这些字段的数量大于0,则返回true,否则返回false。编辑:我想我刚刚说到点子上了。答案来自答案。

您的req变量只获取第一个输入的值,您也应该在那里执行。每个$:input[required]可能返回一个元素列表,而不仅仅是一个。循环通过它们。否则.val将只考虑第一次出现。您的req变量只考虑第一次输入的值,您也应该这样做。每个$:input[required]可能返回一个元素列表,而不仅仅是一个。循环通过它们。否则,.val将只考虑第一次出现。