我有一个网站,您可以通过单击表格单元格进行内联编辑。单击并键入字符串后,需要按Enter键才能更新数据。我的问题是,我想在不按回车的情况下自动发送数据。我应该用这个关键事件? onkeypress事件?以及如何删除回车键事件?
$('td.edit').keydown(function(event){
arr = $(this).attr('class').split( " " );
if(event.which == 13)
{
$.ajax({type: "POST",
url: "../../controller/inline.php",
data: "value="+$('.ajax input').val()+"&rownum="+arr[2]+"&field="+arr[1]+"&ids="+'<?php echo isset($_POST['frmID'])?$_POST['frmID']:$_GET['id']; ?>'+"&dFrom="+'<?php echo isset($_POST['frmDateFrom']) ? $_POST['frmDateFrom']:date('n\/j\/Y', strtotime("-15 days")); ?>'+"&dTo="+'<?php echo isset($_POST['frmDateTo'])?$_POST['frmDateTo']:date('n\/j\/Y'); ?>',
success: function(data){
$('.ajax').html($('.ajax input').val());
$('.ajax').removeClass('ajax');
}});
}
});
答案 0 :(得分:0)
我相信onBlur活动正是您所寻找的。
http://api.jquery.com/blur/
答案 1 :(得分:0)
嗯,我也经历过同样的情况。
你真的需要自动保存吗?
简单的解决方案是'focusout()'或'onBlur()'。
但风险太大了。
这意味着只有单击未命中或未按下按键触发保存事件。
如果您有多列输入somthing。
不要那样做。
但只是单列,请尝试'onBlur()'或'focusout()'
我会等你明智的解决方案。 :3
答案 2 :(得分:0)
你能做什么(虽然我不推荐它)是使用setTimeout来保存数据。这样用户可以在不保存的情况下继续打字,但是一旦他停止输入一秒左右就会保存数据。
看一下这里的例子(http://jsfiddle.net/G2LxD):
var timer;
$('input').keyup(function() {
if (timer !== null) {
clearTimeout(timer);
timer = null;
}
timer = setTimeout(function() {
$.ajax({
type: "POST",
url: "../../controller/inline.php",
data: "[your-data]",
success: function(data){
$('.ajax').html($('.ajax input').val());
$('.ajax').removeClass('ajax');
}
});
}, 1000);
});