JavaScript覆盖第一个值并在If条件中显示第二个值

时间:2019-06-10 11:50:48

标签: javascript jquery html validation

我正在验证表中的电子邮件值,并将该值视为data.Email,但是如果我有多个无效的电子邮件ID,则它将仅显示最后一个无效的电子邮件值作为无效。

tabledata.DataTable.forEach(function (data, index) {
    var emailValue = data.Email
    var emailRegex = /^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/;
      if (!emailRegex.test(emailValue)) {                                                           
        $("#importNext").attr("disabled", true);
             $("#modaldescription2").empty();
             $("#dialogModelHeader2").html("Import Wizard");
             $("#modaldescription2").append("<p> invalid email records</p>" + "<b style='color: red'>" + (index + 1) + "</b>" + " , " + "<b style='color: red'>" + emailValue + "</b>");
             $('#dialogPanel2').modal({
                 dimmerSettings: {
                      variation: 'inverted'
                    }
              }).modal("show");

       }
     }

请参考下图,我使用上述方法收到了两个无效的电子邮件,即使第一个也是无效的,它也仅显示第二个电子邮件

Image

1 个答案:

答案 0 :(得分:0)

我创建了一个与您的正则表达式一起使用的小脚本。 它是纯JavaScript(比jQuery示例更容易阅读)。 如您所见(运行时),两个选项被禁用。

您的代码在IF条件下失败。因为您没有包括整个代码,所以可能是一个错误。 这些可能会在代码中引发错误:

1)可能您正在定位:#importNext,而您正在定位选择框内的最后一个选项。唯一具有该ID的一个元素。

2)代码的这一部分可能出错,但是我不清楚您在此处的工作方式:

    $("#modaldescription2").
    $("#dialogModelHeader2").html("Import 
    $("#modaldescription2").append("<p> invalid email records</p>" + 
      "style='color: red'>" + (index + 1) + "</b>" + " , " + "<b style='color: 
       red'>" + emailValue + "</b>");


         $('#dialogPanel2').modal({
             dimmerSettings: {
                  variation: 'inverted'
                }
          }).modal("show");

这是一个简化的工作示例,运行笔:

let regex = /^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/;

let emails = ['kenan@gmail.com1', 'kenan@gmail.com2', 'kenan@gmail.com']

emails.forEach(email => {
  let option = document.createElement('option');
  option.appendChild( document.createTextNode(email) )
  if(!regex.test(email)){
    option.disabled = true;
   }
  document.getElementById('select').appendChild(option);
})
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

<form>
  <ul>
    <select multiple id="select">
    
    </select>
  </ul>
</form>