1

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

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

我计算总和的代码如下:

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

2 回答 2

1

看起来您的“开始”变量calcRoute()具有非美国邮政编码。如果您将起点默认为有效的美国邮政编码,那么一切都应该有效。另外...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();
        }
    });
}
于 2013-09-09T16:25:47.553 回答
0

根据jQuery 文档,该.change()事件仅限于<input>元素、<textarea>框和<select>元素。所有其他表单元素(复选框、单选框等)都被推迟到失去焦点为止。

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

$(".checkbox").click(function() { //Could use other methods as well
    $(this).each(function() {
        if ($(this).prop('checked', true)) {
            calculateSum();
        }
    });
});
于 2013-09-09T16:07:37.447 回答