JQuery中的更改和Keyup事件处理程序

时间:2009-06-16 07:15:28

标签: javascript jquery mysql cakephp

我在我的应用程序中使用JQuery,CakePHP和Mysql。 我有一个像下面的代码,其中的指令是一个文本框,当我键入它时,它将显示在显示面板中。

$(".TextFieldSettings #instructions").keyup(function (){
  instr=$(".TextFieldSettings #instructions").val();
  $("#displayPanel .fieldInstructions"+counter).html(instr).show();
});//Text field instructions keyup

本守则运作良好。

编辑:   如果我更改了文本框说明中的值,则必须在显示面板中显示键入值。意味着我需要在instr中插入最终更改的值以插入数据库。 我怎么能这样做?

2 个答案:

答案 0 :(得分:0)

您可以延迟操作:

$(".TextFieldSettings #instructions").keyup(function (){
  setTimeout(function () {
    var instr=$(".TextFieldSettings #instructions").val();
    $("#displayPanel .fieldInstructions"+counter).html(instr).show();
  }, 1);
});//Text field instructions keyup

这样,当执行该功能时,输入值已使用按键更新。

答案 1 :(得分:0)

根据您的说明持有多少内容/按键的频率,我认为更新数据库每个键盘都有点矫枉过正。也许每5秒更新一次数据库或什么?每个按键触发/重置setTimeout函数。

此外,您可以用$(this);

替换您的调用以取出文本值
$(".TextFieldSettings #instructions").keyup(function (){
    var instr = $(this).val();
    $("#displayPanel .fieldInstructions"+counter).html(instr).show();

    // Update database
    $.ajax({ 
              method: 'POST', 
              url: 'path/to/a/script_file/executing_the_sql.ext',
              data: { 'str': escape(instr.replace(/\n/g,'<br />')) },
              success: function(){},
              error: function(e){ alert(e.responseText); }
    });

});//Text field instructions keyup