我正在验证表中的电子邮件值,并将该值视为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");
}
}
请参考下图,我使用上述方法收到了两个无效的电子邮件,即使第一个也是无效的,它也仅显示第二个电子邮件
答案 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>