jQuery使用使用javascript更新的字段更改输入值

时间:2013-09-09 15:50:58

标签: jquery sum onchange

我有一个包含多个输入字段的表单和一个显示这些输入字段总和的“总计”框。在表单中是一个部分,用于计算从一个点到另一个点的里程成本,并自动用结果填写输入。我注意到的是,在我填写另一个表单字段之前,这个数字不会被添加到总数中。

我需要的是自动填充然后直接添加到总数中。请参阅此处查看我的工作http://www.samskirrow.com/projects/distr/index2.html - 距离calc位于页面底部,总计位于顶部

我计算总和的代码如下:

$(".txt, .select, .checkbox").each(function() {
        $(this).change(function(){
            calculateSum();
        });
    });

2 个答案:

答案 0 :(得分:1)

calcRoute()中的'start'变量看起来好像是非美国邮政编码。 如果您将起点默认为有效的美国邮政编码,那么一切都应该有效。 另外...在您将文字输入calculateSum()后添加对mileageCost的通话。

function calcRoute() {
    alert("inside calcRoute()");
    var distanceInput = document.getElementById("distance");
    var MileageInput = document.getElementById("mileage");
    var start = "15219";
    var end = document.getElementById("end").value;
    alert("destination: " + end);
    var request = {
            origin:start,
            destination:end,
            travelMode: google.maps.DirectionsTravelMode.DRIVING
                };

    directionsService.route(request, function(response, status) {
    if (status == google.maps.DirectionsStatus.OK) {
        directionsDisplay.setDirections(response);
        distanceInput.value = Math.round(response.routes[0].legs[0].distance.value / 1609.344);
        var mileageCost = Math.round(((response.routes[0].legs[0].distance.value / 1609.344)-100)+150);
        if (mileageCost < 150) {
            MileageInput.value = 'FREE';
        } else
            MileageInput.value = mileageCost;
            calculateSum();
        }
    });
}

答案 1 :(得分:0)

根据jQuery docs.change()事件仅限于<input>元素,<textarea>框和<select>元素。所有其他表单元素(复选框,无线电等)都会延迟,直到它们失去焦点。

所以你可以添加这样的东西:

$(".checkbox").click(function() { //Could use other methods as well
    $(this).each(function() {
        if ($(this).prop('checked', true)) {
            calculateSum();
        }
    });
});