2013-08-22 67 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

非常感谢,下次我会知道的,谢谢! –