我正在验证一个只允许固定长度数值的文本框。我已经完成了解决方法,允许使用退格键,删除键,箭头键等证明密钥,这样可以正常工作。
我无法在文本框中粘贴任何文字,也无法在 Firefox 中的文本框中复制文字。铬合金工作正常。
这是我写的代码。
function validateTransactionId(event)
{
var transactionId = document.getElementById('transactionId').value;
var charCode = (event.which) ? event.which : event.keyCode;
// Allow: backspace, delete, tab, escape, enter
if ($.inArray(charCode, [46, 8, 9, 27, 13, 110]) !== -1 ||
// Allow: home, end, left, right
(charCode >= 35 && charCode <= 39)) {
return true;
}
if ((charCode < 48 || charCode > 57))
return false;
if (transactionId.length == 11)
return false;
return true;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="text" placeholder="Transaction ID" id="transactionId"
onkeypress="return validateTransactionId(event)" />
我想在此文本框中启用复制粘贴。这里的任何帮助将不胜感激。
答案 0 :(得分:1)
需要考虑的一些事项。
首先,您可能希望包含v
字符以考虑Ctrl + V或Cmd + V进行粘贴。
if ($.inArray(charCode, [46, 8, 9, 27, 13, 110, 118]) !== -1
其次,如果有人粘贴,则长度可能已超过11.因此,您需要更改if
声明。
if (transactionId.length > 11) return false;
第三,如果某人粘贴了一个少于11个字符的非数字字符串,它仍会接受它。
我的建议是,而不是尝试验证您验证文本框值的单个按键。您可以使用正则表达式匹配来去除非数字字符。
transactionId = transactionId.replace(/\D/g, "");