2013-08-22 112 views
0

我需要你的幫助。當key=13被擊中時,我已經運行了一個函數,並且該函數正在調用ajax,但之後,ajax函數不會停止,它始終在工作,所以我需要知道一次後如何停止它。一些代碼在這裏:如何在一次後停止執行jQuery函數

$(document).ready(function() 
    { 
     var editor = CKEDITOR.replace('articletext', { 
      toolbar: [ 
       {name: 'basicstyles', items: ['Bold', 'Italic', 'RemoveFormat']}, 
       {name: 'document', items: ['Source', '-', 'NewPage', 'Preview', '-', 'Templates']}, // Defines toolbar group with name (used to create voice label) and items in 3 subgroups. 
       ['Cut', 'Copy', 'Paste', 'PasteText', 'PasteFromWord', '-', 'Undo', 'Redo'], // Defines toolbar group without name. 

      ] 
     });    

     editor.on("key", function(event) { 
      //alert(event.data.keyCode); 
     if (event.data.keyCode===13) 
     {     
      this.document.on("keyup", ck_jq); 

     }     
     }); 

    }); 

function ck_jq() 
    { 
     var charsCount = CKEDITOR.instances['articletext'].getData().replace(/<("[^"]*"|'[^']*'|[^'">])*>/gi, '').replace(/^\s+|\s+$/g, ''); 
     var wordCount = CKEDITOR.instances['articletext'].getData().replace(/[^\w ]/g, "").split(/\s+/); 

     var max = <?php echo $orderInfo->wordstarget; ?>; 

     var txtVal = $('#title').val(); //title field value 
     var descVal = $('#description').val();//description field value 

     var wordstitle = txtVal.trim().replace(/\s+/gi, ' ').split(' ').length;//words in title 
     var wordsdesc = txtVal.trim().replace(/\s+/gi, ' ').split(' ').length;//words in description 

     var text = CKEDITOR.instances['articletext'].getData(); 
     var valueOfText = text + txtVal + descVal;//add all fields text to one 

     var wordsCountAll = wordCount.length + wordstitle + wordsdesc;//add all fields words to text 
     xajax_checkKeywords(valueOfText, <?php echo $base_url[3]; ?>, wordsCountAll);   

    } 

所以我需要停止function ck_jq();一次後執行。

回答

4

爲什麼要註冊一個事件處理程序來處理文件,這就是問題所在,因爲一旦處理程序被註冊,只要在文檔中按下任何鍵時函數被調用註冊處理程序就會被調用ck_jq

editor.on("key", function(event) { 
    //alert(event.data.keyCode); 
    if (event.data.keyCode===13) 
    {     
     ck_jq() 
    }     
}); 
+0

我無法檢測「回車」以另一種方式的關鍵,那就是隻爲我工作的事情。我不擅長jquery。 :( –

+0

但無論如何,謝謝你的回答,現在有效,謝謝! –

1

功能不綁定上this.document.on("keyup", ck_jq);

這將工作每次keyup上的文件。

,並多次這項功能將被綁定多次,將創建一個無限循環

if (event.data.keyCode===13){     
     ck_jq(); 
}     
+0

非常感謝,下次我會知道的,謝謝! –