jQuery更新函数,输入更改来自JS

时间:2015-05-09 09:43:24

标签: javascript jquery html

我有一些功能和事件可以在更改,粘贴,键盘和touchend上更新发票总计,效果很好。但是我已经编写了一些代码,允许您从下拉列表中选择项目数据并将某些内容复制到输入值但是不会更新,现在确定我需要做出哪些更改才能实现。有人有什么想法吗?

JSFiddle:http://jsfiddle.net/9m7q0mp8/(如果你单击选择产品并添加你的看到我的意思,它会添加名称和值,但我需要它来更新小计以及底部的总数,就像它一样,当你手动输入项目的值。)

JS:

{{1}}

1 个答案:

答案 0 :(得分:0)

JSFIDDLE

  • id问题是它必须是唯一的,这不是解决问题但会阻止其他问题,它是HTML规则(W3SCHOOLS Id description):
  

id属性指定HTML元素的唯一ID(值   在HTML文档中必须是唯一的。)

id属性最常用于指向样式表中的样式,并通过JavaScript(通过HTML DOM)来操作具有特定id的元素。

  • input事件应该包含您单独列出的所有其他事件,但有些不同(input event answer):
  

在通过用户更改元素的文本内容时发生   接口

  • 这是另一个问题:e.preventDefault;,你错过了括号:e.preventDefault();
  • 真正的问题是updateTotals();发送了错误的元素标识符,这是正确的:updateTotals('.calculate');

    $(document).on('click', ".item-select", function (e) {
        e.preventDefault();
        var product = $(this);
    
        $('#insert').modal({backdrop: 'static',keyboard: false}).one('click', '#selected', function (e) {
            var itemText = $('#insert').find("option:selected").text();
            var itemValue = $('#insert').find("option:selected").val();
    
            $(product).closest('tr').find('#invoice_product').val(itemText);
            $(product).closest('tr').find('#invoice_product_price').val(itemValue);
    
             updateTotals('.calculate');
            calculateTotal();
    
        });
    
        return false;
    
    });