gpt4 book ai didi

javascript - 使用正则表达式限制文本框中的输入

转载 作者:行者123 更新时间:2023-12-01 03:33:22 25 4
gpt4 key购买 nike

/^+{0,1}(?:\d\s?){11,13}$/ this regex allows + at first place only and numbers only...

在按键时,我希望用户只能首先输入 + 和上面正则表达式验证的数字,但代码总是转到 if 部分..为什么正则表达式在这种情况下不起作用

function ValidatePhone(phone) {
var expr = /^\+?(?:\d\s?){11,13}$/;
return expr.test(phone);
}


var countofPlus = 0;

$("#phone").on("keypress", function (evt) {
if (evt.key == "+")
{
countofPlus = countofPlus + 1;
if (countofPlus > 1 || this.value.length >= 1) {
return false;
}
else return true;
}
var charCode = (evt.which) ? evt.which : event.keyCode
if (charCode > 31 && charCode != 43 && charCode != 32 && charCode != 40 && charCode != 41 && (charCode < 48 || charCode > 57))
return false;
return true;
});
$("#phone").on("keyup", function (evt) {
debugger;
if (evt.key == "+") {
countofPlus--;
return true;
}

});

最佳答案

改编自 HTML input that takes only numbers and the + symbol 的答案根据您的用例生成以下(IE-)兼容代码:

// Apply filter to all inputs with data-filter:
var inputs = document.querySelectorAll('input[data-filter]');

for (var i = 0; i < inputs.length; i++) {
var input = inputs[i];
var state = {
value: input.value,
start: input.selectionStart,
end: input.selectionEnd,
pattern: RegExp('^' + input.dataset.filter + '$')
};

input.addEventListener('input', function(event) {
if (state.pattern.test(input.value)) {
state.value = input.value;
} else {
input.value = state.value;
input.setSelectionRange(state.start, state.end);
}
});

input.addEventListener('keydown', function(event) {
state.start = input.selectionStart;
state.end = input.selectionEnd;
});
}
<input id='tel' type='tel' data-filter='\+?\d{0,13}' placeholder='phone number'>

上面的代码将复制和粘贴、选择、退格等操作考虑到当前实现失败的地方。

此外,我将给定的正则表达式修改为 \+?\d{0,13},以便允许不完整的输入。使用 HTML5 表单验证来验证最终结果。

关于javascript - 使用正则表达式限制文本框中的输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44417888/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com