JavaScript:允许使用箭头/ pgup / pgdown等的数字掩码

时间:2012-02-10 10:10:54

标签: javascript

我编写了简单的JavaScript掩码,允许您只写入数字输入。但问题是,当您按箭头键时, 插入符号将移回到行尾

如何忽略箭头键或其他元键?

这是我的面具:

function applyMaskInteger(elementId) {
    var e = document.getElementById(elementId);
    e.value = e.value.replace(/[^0-9]/g,"");
}

PS:我喜欢jQuery,但请只用简单的JavaScript回答...(我们不在这个项目中使用jQuery)

1 个答案:

答案 0 :(得分:1)

我想这是一个普通的<input type="text">

您可以通过更改其selectionStartselectionEnd属性的值来移动插入符号(至少在现代浏览器中)。

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;
  }
}