我编写了简单的JavaScript掩码,允许您只写入数字输入。但问题是,当您按箭头键时, 插入符号将移回到行尾 。
如何忽略箭头键或其他元键?
这是我的面具:
function applyMaskInteger(elementId) {
var e = document.getElementById(elementId);
e.value = e.value.replace(/[^0-9]/g,"");
}
PS:我喜欢jQuery,但请只用简单的JavaScript回答...(我们不在这个项目中使用jQuery)
答案 0 :(得分:1)
我想这是一个普通的<input type="text">
。
您可以通过更改其selectionStart
和selectionEnd
属性的值来移动插入符号(至少在现代浏览器中)。
function applyMaskInteger(elementId) {
var input = document.getElementById(elementId);
var value = input.value;
var caret = input.selectionEnd;
// apply the mask
input.value = value.replace(/[^0-9]/g,"");
if (typeof caret !== 'undefined') {
// count the resulting characters before the caret
var prefix = value.substr(0, caret);
prefix = prefix.replace(/[^0-9]/g,"");
// move the caret
input.selectionStart = prefix.length;
input.selectionEnd = prefix.length;
}
}