0

我需要你帮忙。我在key=13被命中时运行了一个函数,并且该函数正在调用 ajax,但是之后 ajax 函数并没有停止,它一直在工作,所以我需要知道如何在一次之后停止它。这里有一些代码:

$(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

2 回答 2

4

为什么要将事件处理程序注册到文档,这就是问题所在,因为一旦注册了处理程序,只要在文档中按下任何键,该函数就会被调用,在这种情况下,注册的处理程序ck_jq会被调用。

editor.on("key", function(event) {
    //alert(event.data.keyCode);
    if (event.data.keyCode===13)
    {                
        ck_jq()
    }                   
});
于 2013-08-22T07:19:38.140 回答
1

不要绑定函数this.document.on("keyup", ck_jq);

这将每次keyup在文件上工作。

并且多次这个函数会被绑定很多次并且会创建一个无限循环

if (event.data.keyCode===13){                
        ck_jq();
}                   
于 2013-08-22T07:20:46.233 回答