我正在开发包含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。
提前致谢。
答案 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;
}