首先,
我在做什么? 我必须在网页中设置我们产品中的电子邮件限制。它是用javascript进行验证处理的。它处理最多8位数字。但在我们的QA团队中,在其他电子邮件字段的文本框中输入了超过17位的数字。它会抛出负面信息。我该怎么办?
if(form.otherEmails) {
if(validEmailArray.endsWith(',')){
var otherEmailLength = validEmailArray.substring(0,validEmailArray.length-1).split(",");
var setLimitOtherEmail = window.parent.document.getElementById('setLimitOtherEmail').value;
if(setLimitOtherEmail == '-1'){
form.otherEmails.value = otherEmailLength;
}
else if(otherEmailLength.length <= setLimitOtherEmail){
form.otherEmails.value = otherEmailLength;
}
else{
alert("More than "+setLimitOtherEmail+ " " +"Recipient emailIds not allowed in this section.\nIf you want to send it to more recipients, Please create a Bulk Contact Group.");
form.otherEmails.focus();
return false;
}
}
else
form.otherEmails.value = validEmailArray;
}
答案 0 :(得分:2)
这是因为限制是一个字符串,当一个字符串与一个数字(长度)进行比较时,该数字被强制转换为一个字符串,而不是相反。
然后按字典顺序对这些进行比较 - 并且按字典顺序“9”比“19”更多(&gt;)。
在比较之前,您需要使用parseInt(setLimitOtherEmail, 10)
将值作为数字。
答案 1 :(得分:0)
在对它们执行任何比较操作之前,尝试将每个数字解析为整数。
var setLimitOtherEmail = parseInt(window.parent.document.getElementById('setLimitOtherEmail').value);
除此之外,您确定otherEmailLength实际上是您想要的号码吗?从它的外观来看,你正在获取validEmail数组的子字符串并将其拆分为“,”但它看起来并不像你实际获得数组的长度。尝试将.length添加到otherEmailLength值的末尾。
var otherEmailLength = validEmailArray.substring(0,validEmailArray.length-1).split(",").length;