JQuery在AJAX调用上加载函数

时间:2014-03-02 08:13:12

标签: jquery ajax

我在表单上有一个字段,当它填满时会调用ajax调用。

ajax调用填写表单的其他字段和所有内容。

但我在他们的领域有一些功能,他们只在点击这些字段后才能工作..

$('#lista').on('keypress keydown keyup change',function(){
    var qtd_itens = $('#lista tbody').children('tr').length + 1;
    somatotal = 0;
    for ($i = 0; $i < qtd_itens; $i++) {
        acho = new String($(':input[name="qtd' + $i + '"]').val()),
    alto = new String($(':input[name="preco' + $i + '"]').val());
    acho = acho.replace(',', '.');
    alto = alto.replace('.', '');
    alto = alto.replace(',', '.');
        v = 0;

        if (!isNaN(acho) && !isNaN(alto)){
            v = parseFloat(acho*alto,2);
        }
        $(':input[name="total' + $i + '"]').val(formatter.format(v));
    somatotal += v;
    $(':input[name="valortotal"]').val(formatter.format(somatotal));
    }
});

我知道这种情况正在发生,因为我正在使用on('keypress keydown keyup change'事件。但是,有没有一种方法,当调用ajax调用时,这已经完成了工作而没有我点击字段?

1 个答案:

答案 0 :(得分:0)

以编程方式更改字段时,不会触发更改事件。如果您希望在以编程方式填充ajax调用中的字段后运行代码,则必须将代码放入函数中,并在从ajax调用中将新数据放入其中之后在这些字段上调用它。 / p>

例如,您可以将代码更改为:

$('#lista').on('keypress keydown keyup change', itemsModified);

function itemsModified(){
    var qtd_itens = $('#lista tbody').children('tr').length + 1;
    somatotal = 0;
    for ($i = 0; $i < qtd_itens; $i++) {
        acho = new String($(':input[name="qtd' + $i + '"]').val()),
        alto = new String($(':input[name="preco' + $i + '"]').val());
        acho = acho.replace(',', '.');
        alto = alto.replace('.', '');
        alto = alto.replace(',', '.');
        v = 0;

        if (!isNaN(acho) && !isNaN(alto)){
            v = parseFloat(acho*alto,2);
        }
        $(':input[name="total' + $i + '"]').val(formatter.format(v));
        somatotal += v;
        $(':input[name="valortotal"]').val(formatter.format(somatotal));
    }
)

然后,在AJAX调用填充字段后手动调用itemsModified()


我自己没有尝试过,但您也可以按照原来的方式保留代码,并在ajax调用填写新值后调用:

$('#lista').trigger("change");

这将手动触发更改事件并使您的更改处理程序执行格式化。