如何在脚本中编辑正确的电话号码
How to edit the correct phone number in my script?
我有这个样本:
链接
代码网页:
<label for="primary_phone">Primary Phone Number<span class="star">*</span></label>
<br>
<input type="text" name="primary_phone" id="primary_phone" class="_phone required-input" value="" maxlength="10">
代码 CSS:
.invalid{
border:1px solid red !important;
}
.valid{
border:1px solid green !important;
}
代码 JS:
function phoneFormat(){
$( "._phone" ).on('blur change', function() {
text = $(this).val().replace(/('d{3})('d{3})('d{4})/, "($1) $2-$3");
var testt=$(this).val().match(text);
if($(this).val()=='' || $(this).val().match(text) || $(this).val().length == 0)
{
$(this).removeClass('valid').addClass('invalid');
}
else{
$(this).removeClass('invalid').addClass('valid');
}
$(this).val(text);
});
}
$( "#primary_phone" ).blur(function() {
phoneFormat();
});
我放了一个排列文本格式的脚本例如,我们可以添加这个数字:
1234567890
调用脚本出现后下一个表单(什么是正确的(
(123) 456-7890
问题是当您想编辑我的电话号码时...如果要删除最后两个数字,因为我将以下代码放在maxlength="10"
我希望用户不能写超过 10 个字符。我如何满足这两个要求。
如果有些事情解释不好,我会对这篇文章进行编辑
提前感谢!
只需在将焦点放在输入框上时删除所有特殊字符:
$("#primary_phone").on("click", function() {
var thisVal = $(this).val();
var value = thisVal.replace(/[^'/'d]/g,'');
$(this).val(value);
});
现在,当您单击输入框外时,用于格式化数字的原始函数将播放:)
工作小提琴 : https://jsfiddle.net/reko91/gto0qeyx/2/
我会设置一个更高的maxlength
(比如15
(并将input
绑定到keypress
。
在事件中,您可以根据一组允许的keyCode
检查,否则禁止事件(字符的输入(。
如果我们已经有数字10
,我也会禁止输入数字(有一个例外:如果用户选择(标记(了input
的一部分并且该selection
包含数字。
var alwaysAllowed = [32, 40, 41, 45]; // [" ","(",")","-"]
function keyCode(keyCode) {
if (alwaysAllowed.indexOf(keyCode) !== -1) {
return "allowed";
} else if (keyCode >= 48 && keyCode <= 57) {
// 0 - 9
return "number";
} else {
// any other character
return false;
}
}
function countNumbers(text) {
// return the number of characters [0-9] in the string "text"
var counter = 0;
for (var i = 0; i < text.length; i++) {
if (parseInt(text[i]) >= 0 && parseInt(text[i]) < 10) {
counter++;
}
}
return counter;
}
$primaryPhone.on("keypress", function () {
var keyCodeEvaluation = keyCode(event.keyCode);
if (keyCodeEvaluation === false) {
event.preventDefault();
} else if (keyCodeEvaluation === "number") {
var value = this.value,
counter = countNumbers(value.substring(this.selectionStart, this.selectionEnd));
//
if (counter === 0 && countNumbers(value) > 9) {
event.preventDefault();
}
}
});
这将允许用户编辑(或写入(应用了您的格式的电话号码。
更重要的是
您应该重写phoneFormat()
函数。
每次执行都会添加另一个事件侦听器。第一次更改input
值时,它将执行一次。然后是两次,三次,依此类推。
您还应该将重复使用的对象存储在变量中,例如 $( this )
(每次创建相同的jQuery object
是性能杀手(。
这是一个工作示例,应该涵盖您的大多数用例。
相关文章:
- 带有加号的电话号码验证(可选)
- 正则表达式,用于在 JavaScript 中为电话号码添加短划线
- 通过Javascript将HTML中的电话号码与URL参数进行交换
- Javascript/Ajax:通过点击按钮检查有效的电子邮件和电话号码
- 如何将页面上的所有电话号码更改为可点击链接,不包括特定类别的元素
- 验证澳大利亚的电话号码
- 使用javascript验证电话号码无效
- Regex表示8位电话号码(新加坡号码长度)
- HTML文本框,它接受电话号码,并以美国电话号码格式显示
- 试图清理一个电话号码,以便如果它像816-345-6757一样被输入,它会像8163456757一样返回它
- 输入中的国际电话号码格式
- 什么是英国电话号码验证表达式和语法
- 使用 AngularJs 格式化电话号码
- 如何使移动用户可点击动态电话号码
- 如何通过Phonegap使用iOS格式查找联系人的电话号码
- Jquery国际电话号码输入
- Javascript-如何验证两个电话号码是否不同
- javascript/jquery:从字符串中提取电话号码
- 如何使用angularjs在剑道网格过滤器文本框中应用电话号码掩码
- 如何在脚本中编辑正确的电话号码