使用动态输入时的jQuery Ajax

时间:2015-01-02 22:26:46

标签: jquery ajax

我有动态创建的输入,我试图使用onBlur提交它们的值。我还是jQuery和AJAX的新手,有人可以向我解释为什么函数没有被调用吗?

输入:

<input type="text" class="quantity" onblur="updateQuantity()" name="quantity[]"/>

脚本:

<script>
    function updateQuantity() {

        $(".quantity").blur(function(){
            var quantityValue = $(this).val();
            $.ajax({
                url: "pages/inventory_request_action.php",
                cache: false,
                type: 'POST',
                data: quantityValue,
                success: function(data) {
                    // do something
                }
            });
        });
    }
</script>

1 个答案:

答案 0 :(得分:1)

您正在注册blur事件侦听器两次(一次在输入元素的onblur属性中,另一个在updateQuantity函数中)。所以真正发生的是一旦输入模糊,你实际上并没有调用ajax函数,而是添加另一个事件监听器..

所以,从你的输入元素中删除onblur="updateQuantity()",因为你是通过jquery添加相同的监听器,并重新安排updateQuantity函数中的逻辑,这样它只进行ajax调用,而不用担心添加事件听众。

http://jsfiddle.net/xvtp3vrd/

<强> HTML

<input type="text" class="quantity" name="quantity[]"/>

<强>的Javascript

function updateQuantity(quantityValue){

    alert('submitting quantityValue: ' + quantityValue);
    $.ajax({
        url: "pages/inventory_request_action.php",
        cache: false,
        type: 'POST',
        data: {quantityValue: quantityValue},
        success: function(data) {

        }
    });
}

$('.quantity').blur(function(){

    var val = $(this).val();
    updateQuantity(val);
});