我需要我的输入只接受数字。我有:
<input type="number" pattern="[0-9]*" />如果我开始输入字母,当它失去焦点时,输入将被清空,但如果我输入"2blah“,它将不会被清空。有什么建议吗?
发布于 2019-07-19 23:40:42
仅允许0-9数字、数字板数字、箭头、BackSpace、制表符、删除以及Ctrl + C、Ctrl + V、Ctrl + A。只允许一个点。如果模糊事件上的最后一个字符是点,则将其移除。
element.on('keydown', function(e) {
var arrowsKeyCodes = [37, 38, 39, 40];
var numPadNumberKeyCodes = [96, 97, 98, 99, 100, 101, 102, 103, 104, 105];
var dots = [110, 190];
var tabBackDel = [8, 9, 46];
var acv = [65, 67, 86];
// Allow only one dot.
if (e.target.value.indexOf('.') !== -1 && dots.indexOf(e.keyCode) !== -1) {
event.preventDefault();
}
// allow only [0-9] number, numpad number, arrow, BackSpace, Tab, Del
// Ctrl + C, Ctrl + V, Ctrl + A
if (
(e.keyCode < 48 &&
arrowsKeyCodes.indexOf(e.keyCode) === -1 || e.keyCode > 57 &&
numPadNumberKeyCodes.indexOf(e.keyCode) === -1 &&
dots.indexOf(e.keyCode) === -1
) &&
tabBackDel.indexOf(e.keyCode) === -1 &&
(e.ctrlKey === false || e.ctrlKey === true && acv.indexOf(e.keyCode) === -1)
) {
e.preventDefault();
}
});
element.on('blur', function(e) {
var value = e.target.value;
if (value.substring(value.length - 1) === '.')
e.target.value = value.substring(0, value.length - 1)
});https://stackoverflow.com/questions/49491241
复制相似问题