Javascript 检查副本&;使用jQuery在Textarea中输入有效数字
我正在一个textarea上开发一个jQuery验证,其中包含 逐行输入10位移动电话号码 我使用此代码来确保每10位新行出现一次Javascript 检查副本&;使用jQuery在Textarea中输入有效数字,javascript,jquery,html,validation,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.va
$('#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");
});
上述代码还强制只输入numric值,并且在每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>
Eg:(用户在文本区域中键入)
7777777777
8888888888
9999999999
7777777776
6601145591//无效(应以7/8/9和10位数字开头)
5566887744//无效
664433//无效
8888888886
9999999996
9999999996
8888888886
输出:
总数:11
重复号码:2
有效号码:6
我不知道我正在尝试的事情是否可能。
如果可能的话,如何做到这一点,
如果我能得到文档链接,我会自己做。
但我害怕编写代码,因为我是一名后端开发人员,我正在用PHP检查所有内容,但我想确保客户端的验证也使用jQuery
提前感谢。以下是您可以实现此目标的方法:
$('#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);
}
$(“#手机号码”).keyup(函数(){
如果(/\D/g.test(此值)){
this.value=this.value.replace(/\D/g');
}
this.value=this.value
.replace(/[\n\r]+/g,“”)
。取代(/({10})/g,“$1\n”);
验证枚举器();
});
函数validateEnumbers(){
var值=$(“#移动电话号码”).val();
var numbersArray=value.split('\n');
var ValidNumber=[];
var DuplicateNumber=[];
var inValidNumbers=[];
//删除空元素
var指数=NumberArray.indexOf(“”);
而(索引!=-1)
{
编号排列拼接(索引1);
索引=numbersArray.indexOf(“”);
}
对于(变量$i=0;$i
完整工作演示:
如果你想使用电话号码,那么谷歌
libphonenumber
是最好的解决方案。它确实支持JavaScript和Java,下面是一个例子
图书馆链接:
代码示例:
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;
}
是否需要使用Textarea?如果不是的话,这可能会容易得多。谢谢:)但它也可以将新行光标作为总数计算。是的。如果文本区域中的最后一个字符是\n,则
numbersArray
中的最后一个元素将是空字符串,但它当然将作为元素计算。您可以通过在循环中使用splice
来检查和删除空值:if(!number.length){numbersArray.splice($i,1)}
同样的问题与无效的号码有关。我刚刚编辑了答案和plunk以包含删除排除空电话号码的代码。