0

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

例如:

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

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

对不起我的英语不好。

4

5 回答 5

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

于 2013-03-13T18:08:26.810 回答
0

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

function myFnc function(event) {}

var doc = $(document);
doc.on("keypress", 'input[name="name"]', myFnc);
doc.on("click", "#save_button", myFnc);
于 2013-03-13T18:04:32.820 回答
0

两种主要方法:

  • 通过给它一个名称来取消匿名处理程序,然后将其移动到两个 $(...).on(...) 语句(不是.live())都可以访问的外部范围,然后在这些语句中按名称附加它。
  • 像当前一样附加处理程序,并使用 jQuerys.trigger()方法从附加到“保存”按钮的匿名单击处理程序调用按键处理程序。

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

于 2013-03-13T18:16:36.097 回答
0

我相信您只想在按键后保存数据

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

});

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

});
于 2013-03-13T18:17:41.883 回答
-1

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

var handler = function(e) {
//Handle the event
};
$(document).on( "keypress", 'input[name="name"], #save_button', handler);
于 2013-03-13T18:05:22.850 回答