jQuery为一个动作使用两个方法

时间:2013-03-13 17:59:27

标签: jquery

有一个输入并使用自己的网格。并使用keypress作为输入的提交值,我想使用点击SAVE按钮并运行按键操作。

例如:

$('input[name="name"] , #save_button').live('keypress', function(event) {})

输入必须是keypressed并且必须单击#save_button,我可以使用此方法运行一个函数来保存在数据库中吗?

抱歉我的英语。

5 个答案:

答案 0 :(得分:1)

请勿使用已弃用的.live,请改用.on。 如果你这样做了

 $('input[name="name"] , #save_button').on('keypress click', function() {
     // do something
 });

然后,如果用户点击了输入,那么//do something就完成了,如果用户点击了#save_button。如果我们希望用户通过点击它来使用输入,那么点击输入不应该与#save_button做同样的事情。所以真的需要分成两个听众

 $('input[name="name"]').on('keyup', function(e){
        // do something for keyup (use keyup instead, its just better)
 });

 $('#save_button').on('click', function(){
       // do something for click
 });

如果你想让两个听众做同样的事情

 function doSomething(){
     // do something for both
 }

 $('input[name="name"]').on('keyup', doSomething);

 $('#save_button').on('click', doSomething);

如果你真的需要听众“活着”,那么你可以从文件中委托

 function doSomething(){
     // do something for both
 }

 $(document).on('keyup', 'input[name="name"]', doSomething);

 $(document).on('click', '#save_button', doSomething);   

另外假设您不希望所有按键事件都采取行动但只需要一些按键(如ENTER键),您可能需要看看这个

http://www.cambiaresearch.com/articles/15/javascript-char-codes-key-codes

答案 1 :(得分:0)

使用命名函数并使用两个不同的事件。

function myFnc function(event) {}

var doc = $(document);
doc.on("keypress", 'input[name="name"]', myFnc);
doc.on("click", "#save_button", myFnc);

答案 2 :(得分:0)

两种主要方法:

  • 通过给处理程序命名来对处理程序进行去匿名化,然后将其移动到$(...)。on(...)语句(不是.live())可访问的某个外部作用域,然后附加它在这些陈述中按名称命名。
  • 按照您当前的方式附加处理程序,并使用jQuerys .trigger()方法从附加到“save”按钮的匿名单击处理程序调用keypress处理程序。

在这两种情况下,您都需要采取措施确保传递给按键处理程序的event正确形成,以便在从其他事件类型触发函数时避免错误。

答案 3 :(得分:0)

我认为您只想在按键

后保存数据
var isKeypressed = false;
$('input[name="name"]').on('keypress', function(event) {
isKeypressed   =true;

});

$('#save_button').on('click', function(){
 if(isKeypressed ){
   saveData(); 
 }else{
    // your message
}

});

答案 4 :(得分:-1)

首先避免使用live,因为它已被弃用。 如果您使用的是jQuery 1.7或更高版本,请使用on。 e.g:

var handler = function(e) {
//Handle the event
};
$(document).on( "keypress", 'input[name="name"], #save_button', handler);