两个不同jquery事件的重复ajax调用问题

两个不同jquery事件的重复ajax调用问题,jquery,ajax,Jquery,Ajax,我正在使用ajax和jQuery对html元素进行内联编辑。除了一个问题外,一切正常。问题是ajax调用在两个不同的jQuery事件上重复运行,即。“更改”和“按下键”。以下是我的要点代码: $(document).on('change', 'selector', function(){ $.ajax({ // ajax code goes here... }); }) $('selector').keydown(function(event){ if

我正在使用ajax和jQuery对html元素进行内联编辑。除了一个问题外,一切正常。问题是ajax调用在两个不同的jQuery事件上重复运行,即。“更改”和“按下键”。以下是我的要点代码:

$(document).on('change', 'selector', function(){
    $.ajax({
        // ajax code goes here...
    }); 
})

$('selector').keydown(function(event){
    if(event.which == 13)
    { 
        event.preventDefault();
        $.ajax({
            // ajax code goes here...
        }); 
    }
})
发生“更改”事件时,不会出现重复的ajax调用问题。只有在触发“keydown”事件时才能看到它。当文本框中的某些值被更改并按下enter键时,将调用ajax代码并更新字段。但是,只要我们在页面上单击任意位置,相同的ajax调用就会再次运行。我们如何解决这个问题

更新


两段代码中使用的选择器是相同的,它是一个

如果我正确理解了您的问题,这应该可以解决问题

它基本上只使用一个事件--
keyup
one,通过存储输入的原始值,它可以模拟您想要的
change
事件


keyup
在这里是更好的选择,因为它有输入元素的新值。

如果你的
selector
input
,那么它工作得很好。选择器是类还是引用按钮或文本框?@Manoj,它是一个输入类型框。@MacferAnn,我更新了我的问题,请给我提供一些解决方案。你能提到在什么情况下需要调用AJAX吗?因为下面的答案可以解决自动完成的问题,即每次键入或粘贴文本时调用AJAX,但它不会在每次你在框中写入时调用AJAX,而不仅仅是在你完成键入时调用AJAX吗?那不明智!这就是为什么我不确定我是否正确回答了这个问题。你能详细说明一下你为什么需要
更改
事件,以及你想什么时候用这个事件调用ajax请求吗?请来到聊天室,否则很多评论都会无效。实际上我们需要做的是-有一个文本框。在此框中键入更新值将在失去焦点时触发
change
事件。另一个更新该值的选项是使用Enter键,该键触发
keydown
事件。两个事件都调用相同的ajax请求。但问题是,当我们按Enter键时,会调用ajax,但当用户单击页面上的任意位置时,
change
事件会自动触发,因为textbox会失去焦点。因此,简而言之,如果值已经被更新,我们希望修复这个重复的ajax调用。我想这是一个很好的描述。首先,您不需要更改事件,因为您没有正确地使用它。你所需要的就是模糊。