2009-06-16 210 views
0

我在我的应用程序中使用JQuery,CakePHP和Mysql。 我有一个类似下面的代码,其中的说明是一个文本框,当我键入它时,它将显示在显示面板中。JQuery中的更改和键盘事件处理程序

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

This Code Works well。

编辑: 如果我更改了文本框指令中的值,则必须在显示面板中显示该键值。同时我需要instr中的最终更改值插入到数据库中。 我该怎么做?

+0

你能澄清你在问什么吗?我很难过... – 2009-06-16 07:34:06

回答

0

可以延迟操作:

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

这样,在执行功能时,输入值已经与按键更新。

0

取决于你的指令持有多少内容/多少次按键,我认为更新每个keyup数据库有点矫枉过正。也许每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