有一个输入并使用自己的网格。并使用keypress
作为输入的提交值,我想使用点击SAVE按钮并运行按键操作。
例如:
$('input[name="name"] , #save_button').live('keypress', function(event) {})
输入必须是keypressed
并且必须单击#save_button
,我可以使用此方法运行一个函数来保存在数据库中吗?
答案 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)
两种主要方法:
.live()
)可访问的某个外部作用域,然后附加它在这些陈述中按名称命名。.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);