我在我的应用程序中使用JQuery,CakePHP和Mysql。 我有一个像下面的代码,其中的指令是一个文本框,当我键入它时,它将显示在显示面板中。
$(".TextFieldSettings #instructions").keyup(function (){
instr=$(".TextFieldSettings #instructions").val();
$("#displayPanel .fieldInstructions"+counter).html(instr).show();
});//Text field instructions keyup
本守则运作良好。
编辑: 如果我更改了文本框说明中的值,则必须在显示面板中显示键入值。意味着我需要在instr中插入最终更改的值以插入数据库。 我怎么能这样做?
答案 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