如何使用var在javascript中存储超过10位数的数字?

时间:2011-01-21 13:25:59

标签: javascript jquery ajax

首先,

我在做什么?    我必须在网页中设置我们产品中的电子邮件限制。它是用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;
        }

2 个答案:

答案 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;