2012-07-23 60 views
3

我有以下代码。我怎么能使它简短,所以它与点击和输入工作,所以我不必复制它。如何使这段代码缩短这两个事件

$(document).ready(function(){ 

    $(document).keypress(function(e) { 
    if(e.which == 13) { 
     $('form#myform').submit(); 
    } 
    }); 

    $('#mybutton').click(function() { 
    $('form#myform').submit(); 
    }); 

});​ 

回答

4

这将是一个更短的一个,它采用事件冒泡的优势:

$(document).ready(function(){ 
    $(this).on('keypress click', function(e) { 
     if(e.which == 13 || e.target.id==='mybutton') 
      $('form#myform').submit(); 
    }); 
});​ 

这是它如何工作的:http://jsfiddle.net/e6L3W/

1

试试这个:

(虽然在文件准备使用的$(this)不明确或可能是它的一个错字,它应该是一个输入框)

希望这有助于事业也阅读下面的链接::)

Submitting a form on 'Enter' with jQuery?

ç颂

$(document).ready(function(){ 

    $('#search').keypress(function(event) { //<<== #search is input box id 
    if (event.which == 13) { 
     $('#mybutton').trigger('click'); 
    } 
    }) 

    $('#mybutton').click(function() { 
    $('form#myform').submit(); 
    }); 

});​ 

OR

 var myFunction = function() { 
     $('form#myform').submit(); 
     } 

    $('#search').keypress(function(event) { //<<== #search is input box id 
     if (event.which == 13) { 
      myFunction; 
     } 
     }) 

     $('#mybutton').click(myFunction); 

OR

你可以试试链是这样的:

这将绑定#element的事件,但可能是你正在寻找用2个单独的事件绑定2个独立的元素但结果相同。

$('#element').bind('keypress click', function(e) { 
    ... 
}); 
1
$(document).ready(function(){ 
    $(this).bind('keypress click', function(e) { 
     if(e.type == 'click') { 
      if(e.target.id == 'mybutton') { 
      $('form#myform').submit(); 
      } 
     } else if(e.type == 'keypress') { 
      if(e.which == 13) { 
      $('form#myform').submit(); 
      } 
     } 
    }); 
});​