检查重复&使用jQuery在Textarea中的有效数字

时间:2016-07-30 12:49:31

标签: javascript jquery html validation

我正在开发包含textarea的jQuery验证 逐行10位数的手机号码

我使用此代码确保每10个数字后出现新行。

 $('#mobile_numbers').keyup(function () {

        if (/\D/g.test(this.value))
        {
            this.value = this.value.replace(/\D/g, '');
        }

        this.value = this.value
            .replace(/[\n\r]+/g, "")
            .replace(/(.{10})/g, "$1\n");
    });

上述代码也强制只输入数字值,每增加10位数后,它会添加新行。

一切都运转良好,但我陷入了

的境地

1)我正在尝试检查手机号码是否有效 条件是它应该从7或8或9开始,每行包含10位数,如果不是,我将删除它。

2)我也试图计算重复的数字&使用jquery在textarea中跨数据的有效数字,并将HTML中的输出显示为

Eg: (User type in text area)
7777777777
8888888888
9999999999
7777777776
6601145591 // Invalid (should start with 7/8/9 & 10 digit)
5566887744 //Invalid
664433     //Invalid
8888888886
9999999996
9999999996
8888888886

Output:
<h1>Total number: 11<h1>
<h1>Duplicate number: 2<h1>
<h1>Valid number: 6<h1>

我不知道我正在尝试的事情是否可能。 如果可能的话怎么做, 如果我能获得文档链接,我会自己做。 但我害怕编写这个代码,因为我是一个后端开发人员,我正在检查PHP中的所有内容,但我想确保客户端的验证也使用jQuery。

提前致谢。

2 个答案:

答案 0 :(得分:2)

以下是如何实现目标:

        $('#mobile_numbers').keyup(function () {
            if (/\D/g.test(this.value)) {
                this.value = this.value.replace(/\D/g, '');
            }
            this.value = this.value
                    .replace(/[\n\r]+/g, "")
                    .replace(/(.{10})/g, "$1\n");
            validateNumbers();
        });
        function validateNumbers() {
            var value = $("#mobile_numbers").val();
            var numbersArray = value.split('\n');
            var validNumbers = [];
            var duplicateNumbers = [];
            var inValidNumbers = [];

            // remove empty elements
            var index = numbersArray.indexOf("");
            while(index !== -1)
            {
                numbersArray.splice(index,1);
                index = numbersArray.indexOf("");
            }

            for (var $i = 0; $i < numbersArray.length; $i++) {
                var number = numbersArray[$i];
                if (validNumbers.indexOf(number) !== -1 || inValidNumbers.indexOf(number) !== -1) {
                    duplicateNumbers.push(number);
                } else if (number.match(/[789]\d{9}/)) {
                    validNumbers.push(number);
                } else {
                    inValidNumbers.push(number);
                }
            }
            $("#total").text(numbersArray.length);
            $("#duplicate").text(duplicateNumbers.length);
            $("#valid").text(validNumbers.length);
            $("#invalid").text(inValidNumbers.length);
        }

完整的工作演示: https://plnkr.co/edit/u4hN9QGqOZJ4Sx6F7K90?p=preview

答案 1 :(得分:0)

如果您想使用电话号码,那么Google libphonenumber是最佳解决方案。它支持JavaScript和Java,这里是JavaScript DEMO

图书馆链接:https://github.com/googlei18n/libphonenumber

代码示例:

var phoneUtil = i18n.phonenumbers.PhoneNumberUtil.getInstance();
var number = phoneUtil.parseAndKeepRawInput(phoneNumber, "US");
var isValidNumber = phoneUtil.isValidNumber(number);
if (isValidNumber) {
    var formattedNumber = phoneUtil.format(number,  18n.phonenumbers.PhoneNumberFormat.E164);
    return formattedNumber;
}