点击Enter键检查或选择复选框

时间:2012-09-13 12:30:48

标签: jquery forms checkbox enter

新手 - 我想用这些复选框做两件事:

  1. 使用 TAB 键来选项卡,这部分可以使用
  2. 当我 TAB 通过选项时,我想按 ENTER 键选中该复选框,此部分不起作用
  3. 以下是示例代码。我使用复选框作为一组。

    有人有任何建议吗?

    <!doctype html>
        <head>
            <title>test Radio buttons checkbox</title>
            <script type="text/javascript" src="http://code.jquery.com/jquery-latest.js"></script>
            <script type="text/javascript">
                $(document).ready(function(){
                    $('input:checkbox[name=Colors]').keypress(function(event) {
                        var keycode = (event.keyCode ? event.keyCode : event.which);
                        if (keycode == 13) {
                            Checkbox_to_RadioButton(this);
                            alert("Enter key was pressed");
                        }   
                        event.stopPropagation();
                    });
    
                    $('input:checkbox[name=Colors]').click(function(){
                        Checkbox_to_RadioButton(this);
                    });
                });
    
                function Checkbox_to_RadioButton(box){
                    $('input:checkbox[name=' + box.name + ']').each(function(){
                        if (this != box)
                            $(this).attr('checked', false);
                    });
                }
            </script>
        </head>
    
        <body>
            <h1>test Radio buttons checkbox</h1>
            <form name="form1">
                <input type="text" id="dname" name="dname"><br>
                <input type="checkbox" id="Colors" name="Colors" value="Red" />Red<br />
                <input type="checkbox"  id="Colors" name="Colors" value="Blue" />Blue<br />
                <input type="checkbox" id="Colors"  name="Colors" value="Green" />Green<br     />
                <input type="checkbox" id="Colors"  name="Colors" value="Yellow"         />Yellow<br /> 
                <br>
            </form>
        </body>
    </html>
    

4 个答案:

答案 0 :(得分:9)

我发现推荐的解决方案过于臃肿。这样做效果更好

$('input:checkbox').keypress(function(e){
    if((e.keyCode ? e.keyCode : e.which) == 13){
        $(this).trigger('click');
    }
});

答案 1 :(得分:5)

试试此代码

<!doctype html>
<html>
  <head>
    <title>test Radio buttons checkbox</title>
    <script type="text/javascript" src="http://code.jquery.com/jquery-latest.js"></script>
    <script type="text/javascript">
        $(document).ready(function(){
            $('input:checkbox[name=Colors]').keypress(function(event) {
                var keycode = (event.keyCode ? event.keyCode : event.which);
                if (keycode == 13) {
                    Checkbox_to_RadioButton(this,"enter");
                }   
                event.stopPropagation();
            });

            $('input:checkbox[name=Colors]').click(function(){
                Checkbox_to_RadioButton(this,"click");
            });
        });

        function Checkbox_to_RadioButton(box,myEvent){
            if(myEvent == "enter")
            {
                var $box = $(box);
                if($box.attr('checked'))
                    $box.attr('checked',false);
                else
                    $box.attr('checked',true);
            }
            $('input:checkbox[name=' + box.name + ']').each(function(){
                if (this != box)
                    $(this).attr('checked', false);
            });
        }
    </script>
</head>

<body>
    <h1>test Radio buttons checkbox</h1>
    <form name="form1">
        <input type="text" id="dname" name="dname"><br>
        <input type="checkbox" id="Colors" name="Colors" value="Red" />Red<br />
        <input type="checkbox"  id="Colors" name="Colors" value="Blue" />Blue<br />
        <input type="checkbox" id="Colors"  name="Colors" value="Green" />Green<br     />
        <input type="checkbox" id="Colors"  name="Colors" value="Yellow"         />Yellow<br /> 
        <br>
    </form>
  </body>
</html>

答案 2 :(得分:1)

r3wt的方法效果很好,但是我注意到在表单上按Enter也会提交表单,或者进行其他不需要的操作。在复选框上按Enter键,添加e.preventDefault();会阻止默认的浏览器操作。

$('input:checkbox').keypress(function(e){
    e.preventDefault();
    if((e.keyCode ? e.keyCode : e.which) == 13){
        $(this).trigger('click');
    }
});

答案 3 :(得分:0)

首先,您在form代码前缺少括号。

其次,你忘了实际激活按键上的复选框:

if (keycode == 13) {
    $(this).attr('checked', checked); // << this line!
    Checkbox_to_RadioButton(this);
    alert("Enter key was pressed");
}   

Working Fiddle here.