我只允许“。”以及其他一些字符或其他字符。
以下代码正常运行,但允许使用“。”
html和js
<input type="text" class="form-control" id="PhoneNo" name="PhoneNo" minlength="10" maxlength="12" placeholder="Enter Phone No">
$('#PhoneNo').keyup(function()
{
if (/\D/g.test(this.value))
{
this.value = this.value.replace(/\D/g, '');
}
});
答案 0 :(得分:2)
使用以下代码。如果它与正则表达式不匹配(仅匹配数字和点),它将删除最后一个值。
每次按下一个键(不释放它,因此该值都不在输入中)时,.keypress()
功能就会激活。也就是说,如果值与正则表达式不匹配,请删除最后一个字符。可行,但因为它在按键上,并且在释放键时该字符算作“正在键入”(在.keyup()
上,您只需添加一个.keyup()
函数即可解决该问题。
let pattern = new RegExp("^[0-9.]+$");
$("#PhoneNo").keypress(function() {
if (!pattern.test($(this).val())) {
$(this).val($(this).val().slice(0, -1));
}
});
$("#PhoneNo").keyup(function() {
if (!pattern.test($(this).val())) {
$(this).val($(this).val().slice(0, -1));
}
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<input type="text" class="form-control" id="PhoneNo" name="PhoneNo" minlength="10" maxlength="12" placeholder="Enter Phone No">
答案 1 :(得分:1)
请尝试以下操作:
if (/[^\d\.]/g.test(this.value))
{
this.value = this.value.replace(/[^\d\.]/g, '');
}
答案 2 :(得分:1)
也尝试一下:
<!DOCTYPE html>
<html>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
</head>
<body>
<input type="text" class="form-control" id="PhoneNo" name="PhoneNo" minlength="10" maxlength="12" placeholder="Enter Phone No" />
<script>
$("#PhoneNo").keyup(function (e) {
checkNumbersOnly($(this));
});
function checkNumbersOnly(myfield)
{
if (/[^\d\.]/g.test(myfield.val()))
{
myfield.val(myfield.val().replace(/[^\d\.]/g, ''));
}
}
</script>
</body>
</html>