为什么我们使用Keypress事件和密钥代码?

时间:2015-06-18 10:52:54

标签: javascript jquery jquery-ui

在我的Javascript代码中使用时,Tabz对Mozilla中的文本框不起作用:

function AttachKeyupEvent() {
    var textboxes = $("input[type=text][isautocomplete!=true]");

    /// regex excluding all foreign characters
    var regex = new RegExp("^[a-zA-Z0-9\b\s \+\?\(\)*#;:\$@!\&=\\-.,'//]+$");

    $(textboxes).live('keypress', function (e) {
        var key = String.fromCharCode(!e.charCode ? e.which : e.charCode);
        var code = e.which || e.keyCode;
        /// code to check foreign characters code 46 is for delete 39 and 37 is for arrows (mozila spport)
        if (regex.test(key) || code == 46 || code == 39 || code == 37 || code == 92) {
            if (e.which != 0 && e.charCode != 0) {
                TriggerHandlers.call(this);
            }
        }
        else {
            e.preventDefault();
            return false;   
        }
    });

但是当我在其他部分使用此代码时,它可以正常工作。

else {
    return true;   
}
});

可以请任何人给我正确解释究竟代码在做什么?为什么这些键码在这里使用?

2 个答案:

答案 0 :(得分:0)

e.preventDefault();return false;只会阻止进一步的标记。

答案 1 :(得分:0)

e.preventDefault();因为它的名字建议阻止浏览器在事件上的默认行为,在这种情况下,从带有制表符的字段到字段。