0

我有一个网站,您可以通过单击表格单元格进行内联编辑。单击并键入字符串后,您需要按回车键才能更新数据。我的问题是,我想在不按回车的情况下自动发送数据。我应该在这个事件中使用什么关键事件?按键?我将如何删除输入键事件?

 $('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');
                                            }});


            }
});
4

3 回答 3

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);
  });
于 2013-08-07T10:32:40.877 回答
0

嗯,我也遇到过同样的情况。

你真的需要自动保存吗?

简单的解决方案可能是“focusout()”或“onBlur()”。

但这太冒险了。

这意味着只是单击未命中或未命中按键触发保存事件。

如果您有多个列要输入一些东西。

不要那样做。

但只是单列,尝试 'onBlur()' 或 'focusout()'

我会等待你的明智解决方案。:3

于 2013-08-07T02:56:03.917 回答
0

我相信 onBlur 事件是您正在寻找的。
http://api.jquery.com/blur/

于 2013-08-07T02:48:51.540 回答