我需要你的帮助。我在命中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();
。
答案 0 :(得分:4)
为什么要向文档注册事件处理程序,这就是问题,因为一旦处理程序被注册,任何只要在文档中按下任何键,函数就会被调用,在这种情况下调用注册的处理程序ck_jq
。 / p>
editor.on("key", function(event) {
//alert(event.data.keyCode);
if (event.data.keyCode===13)
{
ck_jq()
}
});
答案 1 :(得分:1)
不要绑定this.document.on("keyup", ck_jq);
每次keyup
在文档上都会有效。
多次将此函数绑定多次并创建无限循环
if (event.data.keyCode===13){
ck_jq();
}