javascript - JQuery 验证 - 如何检测 '&' keyPress (仅允许 '&' 而不是 '7' ,因为两个键码都是 '55' )

标签 javascript jquery

我想要一个允许按“&”按键但不允许按数字键“7”的验证,我该怎么做。 以下是我的代码片段...

    $(function(){
        $('#idCategoryName').keydown(function(event){
            var keyCode = event.keyCode;
            var categoryName = $('#idCategoryName').val();
            /* console.log("'"+ ( categoryName.slice(1) == " " ) +"' "+ categoryName.slice(1)); */
            /* console.log(keyCode); */
            if( keyCode == 32 ) {
                if( ( categoryName.slice(-1) == " ") )
                    event.preventDefault();
                if( event.target.selectionStart === 0)
                    return false;
            }
            if( keyCode == 55 )
                if( ( categoryName.slice(-1) == "&") )
                    event.preventDefault();
            if( keyCode == 191 )
                if( ( categoryName.slice(-1) == "/" ) )
                    event.preventDefault();             
            return ( ( keyCode >= 65 && keyCode <= 90 ) || keyCode == 8 || keyCode == 9 || 
                        keyCode == 37 || keyCode == 38 || keyCode == 39 || keyCode == 40 || 
                            keyCode == 32 || keyCode == 13 || keyCode == 46 || keyCode == 55 || 
                                keyCode == 191 );
        });
    });

此代码允许输入“7”,并且我不想在我的输入框中输入任何数值,代码改进,欢迎...

我更新的工作片段...

    $(function(){
        $('#idCategoryName').keydown(function(event){
            var keyCode = event.keyCode;
            var categoryName = $('#idCategoryName').val();
            /* console.log("'"+ ( categoryName.slice(1) == " " ) +"' "+ categoryName.slice(1)); */
            /* console.log(keyCode); */
            if( keyCode == 32 ) {
                if( ( categoryName.slice(-1) == " ") )
                    event.preventDefault();
                if( event.target.selectionStart === 0)
                    return false;
            }
             **Changed Here**
            if( event.shiftKey ) {
                if( ( categoryName.slice(-1) == "&") )
                    event.preventDefault();
                if( keyCode == 55 ) 
                        return true;
            }
            if( keyCode == 191 )
                if( ( categoryName.slice(-1) == "/" ) )
                    event.preventDefault();             
            return ( ( keyCode >= 65 && keyCode <= 90 ) || keyCode == 8 || keyCode == 9 || 
                        keyCode == 37 || keyCode == 38 || keyCode == 39 || keyCode == 40 || 
                            keyCode == 32 || keyCode == 13 || keyCode == 46 || keyCode == 191 );
        });
    });

最佳答案

您还需要检测 shift 键。然后将其放入 if 语句中。

基于您的代码

示例:

if(event.shiftKey == true && keyCode == 55) {
    alert("Shift + 7 (&) are pressed!");
}

shift 的键码是 16

fiddle 示例:http://jsfiddle.net/C0dekid/dprx94j7/

关于javascript - JQuery 验证 - 如何检测 '&' keyPress (仅允许 '&' 而不是 '7' ,因为两个键码都是 '55' ),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36767591/

相关文章:

javascript - 加载 CSS 未 100% 工作

javascript - 防止固定 Div 覆盖其他 Div

javascript - 未捕获的类型错误 : Cannot read property 'children' of null(…) (no matter what I do)

javascript - 从多个 div 中删除元素

javascript - 如果长度为空,则需要通过一个条件

循环访问 Iframe 集合时出现 Javascript 错误 --> 防止错误的索引问题

javascript - 有没有办法向 Electron 中的每个渲染器进程发送异步消息?

javascript - 如何使用filter方法返回通过过滤测试的对象内部的另一个属性?

javascript - 页面重新加载时保留所选选项值

jquery - 如何使用 jQuery 在 asp.net 中输入真实正则表达式验证器时启用或禁用按钮控件