0

当失去对输入字段的关注或当用户在输入字段中点击输入时,我想请求一个 ajax 查询。

我有以下代码这样做

function editVK() {
    var input = $('.check_vk');
    input.keydown(function () {
        // DO some markup
    }).focusout(function () {
        // execute ajax in function
        calculateVolleKist($(this));
        return false;
    }).on('keypress', function (e) {
        var code = (e.keyCode ? e.keyCode : e.which);
        if (code == 13) {
           // execute ajax in function   
           calculateVolleKist($(this));
           return false;
        }
    });
}

function calculateVolleKist(elem) {
    var regel = elem.closest("tr");
    var article_id = regel.attr('data-article_id');
    var basket_id = regel.attr('data-basket_id');
    var vk = parseFloat(formatToDecimal(elem.val()));

    $.ajax({
        url: 'beltramibasket.php?action=wijzig_volle_kist&basket_id='+basket_id+'&article_id='+article_id+'&vk='+vk,
        type: 'GET',
        dataType: "html",
        async: true,
        success: function(data) {
            $('.basket_body').html("");
            $('.basket_body').html(data);
            editVK();
        }
    });
}

使用此代码时,我对输入的第一次更改会触发 1 个请求。我的第二个更改触发了 2 个请求,我的 3 个请求触发了 4 个请求,依此类推,我的浏览器崩溃了。

编辑 包括第二个功能。我的回应是 HTML ,我清除正文并将 html 放回正文。之后我再次执行函数editVK。因为我想在编辑输入框的时候触发其他请求。

4

2 回答 2

0

尝试在您的 jQuery 代码之前插入它:

input.unbind('keydown');
input.unbind('focusout');
input.unbind('keypress');

不是 100% 确定这是否是您的问题的根源,但您可能每次都在注册新事件。

于 2014-02-28T10:43:55.433 回答
0

尝试使用此代码,它对我来说工作正常

var input = $('.check_vk');
input.focusout(function () {
    // execute ajax in function
    calculateVolleKist($(this));
    return false;
}).keypress(function(event) { 
    if (event.which == 13 || event.keyCode == 13) {
            //code to execute here
             calculateVolleKist($(this));
       return false;
        }
    }
});
于 2014-02-28T10:45:19.517 回答