我已经为用户做了一个只允许输入这些字符的正则表达式。例如,如果用户写“@”,它应该不允许这样做,但是在我的代码中,如果用户按了@,然后按下选项卡,'@‘仍然存在。
function onlyAlphabet(inputVal) {
var patt = /^[a-zA-Z.123456789]+$/;
if (patt.test(inputVal)) {
document.getElementById('facebook').value = inputVal;
} else {
var txt = inputVal.slice(0, -1);
document.getElementById('facebook').value = txt;
}
}<div class="form-group mb-3">
<label for="exampleFormControlTextarea1" class="fw-bold my-1 fs-7" id="text-color1">Facebook</label>
<input type="text" placeholder="Facebook" onkeypress="onlyAlphabet(value)" id="facebook" class="form-control" name="facebook" value="<?php echo $row['facebook'] ?>" style="padding-left: 0 !important; border: none; border-bottom: 1px solid #E8E8E8; border-radius: 0 !important;">
</div>
发布于 2022-01-28 14:34:46
您应该添加onchange="onlyAlphabet(value)"和onblur="onlyAlphabet(value)",以确保在任何情况下都会调用它
发布于 2022-01-28 14:55:02
你可以用这三种方法中的任何一种-
onChange="onlyAlphabet(value)" -当输入changes的值
onKeyUp="onlyAlphabet(value)" -或onKeyDown,当密钥为released/pressed时
onBlur="onlyAlphabet(value)" -当焦点离开input...时
发布于 2022-01-28 14:45:21
必须设置oninput而不是onkeypress
https://stackoverflow.com/questions/70895114
复制相似问题