javascript - jQuery 自定义验证仅显示最后一个字段的错误

标签 javascript jquery forms validation

我用 Jquery 编写了以下简单的验证代码,一切正常,但只显示最后一个字段的错误。 我已经开始放置带有错误 div 的此字段集:

<fieldset data-check-id="1">
<div class="fs-error"></div>
<input type="text" size="50" id="ptitle" name="title" />
<input type="text" id="address" name="p_address">
</fieldset>

接下来我尝试了这样的事情

function check($fs){
var ok = true;
switch($fs.attr('data-check-id')){
case '1':

$ptitle = $('#ptitle',$fs);
$address = $('#address',$fs);

//title
if ($ptitle.val().length == 0) {
ok=false;
jQuery( "#ptitle" ).css( "border-bottom", "2px solid red" );
jQuery('.fs-error').html('<span style="color:red;"> Error 1 </span>');
jQuery('.fs-error').show();
}
else{
jQuery( "#ptitle" ).css( "border-bottom", "2px solid rgb(0, 102, 0)" );
jQuery('.fs-error').hide();
}

//Address
if ($address.val().length == 0) {
ok=false;
jQuery( "#address" ).css( "border-bottom", "2px solid red" );
jQuery('.fs-error').html('<span style="color:red;"> Error 2 </span>');
jQuery('.fs-error').show();
}
else{
jQuery( "#address" ).css( "border-bottom", "2px solid rgb(0, 102, 0)" );
jQuery('.fs-error').hide();
}
break;
}

if(ok === true){
        $fs.attr('data-complete', true);
        return true;
    }
    else{
        $fs.attr('data-complete', false);
        return false;
    }
}

检查功能

function form_completeCheck(){
  var ok = true;
  $('fieldset').each(function(index,elem){
    $this = $(this);
    if ($this.attr('data-complete') != 'true') {
      ok = false;
    };
  })

  if (ok === true) {
    //go go go..
    return true;
  }
  else{
    // stop
    return false;
  }

}

现在一切正常,但如果标题和地址均未填写,则仅显示地址错误(错误 2)。如果我插入地址,标题输入会以红色边框突出显示,但不会显示其消息(错误 1)。我做错了什么?提前致谢

最佳答案

当有 2 个错误时,只显示第二个错误,因为您正在用这一行完全重写 fs-error div(删除之前的内容):

jQuery('.fs-error').html('<span style="color:red;"> Error 2 </span>');

在第二种情况下,错误 1 ​​未显示,因为您在第二次地址验证中隐藏了 div:

jQuery('.fs-error').hide();

只有在没有错误的情况下才想隐藏它。

关于javascript - jQuery 自定义验证仅显示最后一个字段的错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36678446/

相关文章:

javascript - 无法为 <select> 列表框添加 <options>

javascript - 使用 JavaScript 构建 HTML 表格,行顺序

javascript - 从 displaform.aspx 隐藏 id 或 div

javascript - 调整选择框的大小以容纳所选文本

c# - 在 ASP.net MVC 中实现表单

javascript - 文本区域和选择器选项未发送到电子邮件

javascript - 既然有了AJAX,为什么还需要<form/>呢?

javascript - 使用 javascript 或 jquery 提交链接,无需刷新页面

javascript - Fancybox:更改地址栏中的 url 并链接到打开 Fancybox 的页面的链接

javascript - 使文本与滚动窗口同时加载