将jquery keybind隔离到单个聚焦元素

时间:2011-08-22 09:22:29

标签: jquery

如何在用户点击输入时允许触发表单,但仅当该字段处于焦点时?这就是我现在所拥有的,但是在任何地方按下输入(显然)都会触发表格。

 jQuery(window).bind('keypress', function(e){
   if ( e.keyCode == 13 ) {
     jQuery("#goform").click();
     e.preventDefault();
   }
 });

4 个答案:

答案 0 :(得分:3)

尝试将.bind放在元素上,而不是整个窗口:

jQuery('#elementID').bind('keypress', function(e){
   if ( e.keyCode == 13 ) {
     jQuery("#goform").click();
     e.preventDefault();
   }
 });

如果您的字段标识为elementID。当然,您可以通过姓名,标记名或使用任何其他jQuery Selector来接近该字段。

答案 1 :(得分:1)

您应该使用选择器选择表单元素并将keypress()方法分配给该对象:

$('#idOfFormInputElement').keypress(
    function(e){
        e.preventDefault();
        e.stopPropagation();
        if (e.keyCode == 13) {
            $(this).closest('form').submit();
        }
    });

如果动态添加元素,则可以使用delegate()代替:

$('#idOfFormElement').delegate('#idOfFormInputElement', 'keypress',
    function(e){
        e.preventDefault();
        e.stopPropagation();
        if (e.keyCode == 13) {
            $(this).closest('form').submit();
        }
    });

答案 2 :(得分:0)

使用jQuery('#{insert-your-form-field-id}')代替jQuery(window)

答案 3 :(得分:0)

传递给回调函数的'e'参数将包含触发'keypress'事件的元素的详细信息 -

e.target.id

http://api.jquery.com/event.target/