仅允许文本输入中的数字输入,并允许连字符作为可选的第一个字符

时间:2010-12-29 00:37:35

标签: javascript html prototypejs

我需要自动清理用户输入文本输入 - 只允许数字,第一个字符除外,可以是数字或连字符。

因此,例如,如果用户键入138a29,它将自动更新为13829。

我正在使用onKeyPress事件来检查keyCode只允许数字,但事实证明,在某些浏览器中,如果不打破箭头键,退格键等,那么真正只允许数字有点困难。现在有一个新的要求是允许连字符( - )作为可选的第一个字符,但连字符在字符串中的任何其他位置都无效。

我有Prototype库用于我的特定项目,但没有jQuery。

2 个答案:

答案 0 :(得分:1)

最简单的方法是避免使用keyCode并在keyup上使用文本框的值。像这样......

Event.observe('myInput', 'keyup', function(){
    var value = this.value, first;
    if(value.length == 0)
         return;

    first = value.charAt(0);
    value = value.replace(/[^0-9]/g,'');

    if(first == '-')
        value = first + value;

    this.value = value;
    return true;
});

答案 1 :(得分:0)

试试这个

<script type="text/javascript">
function whatKey(e) {
    var thetext = document.getElementById('tt');   // Current value
    var theKey = String.fromCharCode(e.keyCode);   // key entered
    var combval = thetext.value + theKey;          // Result would be this

    return (!isNaN(combval) || combval=='-');      // if result OK, accept key

}
</script>