KeyPress n KeyUp事件 [英] KeyPress n KeyUp events

查看:71
本文介绍了KeyPress n KeyUp事件的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个文本字段,应该接受 只有数字

但我的条件很少,

1当我按第一个数字'M'时应该附加

2.当我按下更多数字时,'M'应该保持在最后。

例如。 1M

12M

123M

1236M

3.当我按下退格键时,应该删除M之前的数字并且不是M.



i尝试使用按键事件检查仅限数字,它可以工作,但我认为我必须将它与keyup组合用于上述条件。

i have a text field which should accept only numbers
but i have few conditions,
1. when i press first number 'M' should be appended
2. when i press further numbers 'M' should stay at end.
eg. 1M
12M
123M
1236M
3. when i press backspace the number before M should be deleted and not M.

i tried using keypress event check for number only,it works but i think i will have to combine it with keyup for the above conditions.

推荐答案

看看这里:在jQuery中使用正则表达式 [ ^ ]并尝试更改代码满足您的需求。
Have a look here: Using regex with jQuery[^] and try to change the code to your needs.


function fn() {
    var element = document.getElementById("NumberInput");
    element.value = "";
    element.onkeydown = function (e) {

        if (element.value.length == 0) {
            element.value = "M";
        }

    };

    element.onkeyup = function (e) {

        if (e.keyCode == 8) {
            var Number = element.value;
            var caretPos = element.selectionStart;
            if (caretPos == element.value.length) {
                Number = Number.replace('M', '');
                Number = Number.substring(0, Number.length - 1);
                element.value = Number + 'M';
            }
        }
        else {
            var Number = element.value;
            Number = Number.replace('M', '');
            element.value = Number + 'M';
        }
    };
}







在body onload上调用它。如果你熟悉jquery,你就可以做到这一点。这是针对您的问题的纯JavaScript解决方案。希望这会有所帮助。




call this on body onload. if you familiar with jquery you can do this less no of lines. this is pure javascript solution for your problem. hope this helps.


这篇关于KeyPress n KeyUp事件的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆