【问题标题】:Jquery keypress cascadingJquery按键级联
【发布时间】:2015-04-26 13:20:40
【问题描述】:

我有几个文本框只需要接受小于 5 的数字。 当用户输入一个数字时,需要发生一些其他事件。 Keypress 事件工作得很好,除了当用户输入文本框 1 时,该事件被触发一次(这是正确的),当他随后进入文本框 2 时,事件被触发两次(这是正确的吗?) - 一次用于文本框 1,另一次用于文本框 2。如果他退格并输入第三个数字,则该事件被触发三次。

我是 jquery 的新手,所以如果我遗漏了一些简单的东西,请原谅我。我原以为每次按键都会触发一次,但似乎它会保留以前的按键。

function validateInputKeyPress(e){

var element = document.getElementById(e.name);  

$("body").keypress(function(e) {
    var keycode= e.keyCode;
    alert(e.name); // this tells me which textbox
    if (keycode!=8){ //allow backspace
        if (keycode<49||keycode>53) { //if not a number less than 6
            return false; //disable key press
        }
    }
    handleQtyChange(e.name, keycode);
});

}

【问题讨论】:

    标签: jquery events keypress


    【解决方案1】:

    您已将事件绑定到 body。您应该在输入上绑定事件。 您可以使用stopPropagation 来停止事件冒泡。

    $("body").on('keypress', ':text', function(e) {
        e.stopPropagation();
    

    这将只绑定文本框上的事件,而不是body

    参考:https://api.jquery.com/on/

    【讨论】:

    • 对我来说,场景看起来不同。他说事件触发计数取决于文本框中的字符数而不是祖先数,如果我错了,请纠正我。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-17
    • 2018-08-05
    • 1970-01-01
    相关资源
    最近更新 更多