2009-06-16 48 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