Калькулятор площади с тремя полями в jQuery (рассчитывается на основе пропущенного значения) - PullRequest
0 голосов
/ 11 марта 2011

Я работаю над калькулятором, который имеет три поля: «длина», «ширина», «площадь».«Площадь» равна «длина» х «ширина».Тем не менее, мой клиент должен иметь возможность обновить любые два из этих полей, чтобы получить третье - то, что у меня есть в настоящее время, вычисляет площадь только при изменении длины или ширины и не имеет возможности вычислить пропущенное значение.

jQuery(document).ready( function ($) {
  $('input').change(function() {
    var $parent = $(this).parents("td").children("div").children("div"),
        length = $parent.find('input[id*="field-length-0-value"]').val(),
        width = $parent.find('input[id*="field-width-0-value"]').val();
        $parent.find('input[id*="field-area-0-value"]').val(length * width); 
  });
});

Источник , jsbin

Как обновить длину или ширину при изменении области?

Большое спасибо!

Ответы [ 2 ]

1 голос
/ 11 марта 2011

Дайте каждому входу уникальный идентификатор, затем:

$('input').change(function() {

var currentId = $(this).attr('id');
if (currentId == 'area'){
//DO AREA CALCULATIONS
}
if (currentId == 'length'){
//DO LENGTH CALCULATIONS
}
if (currentId == 'width'){
//DO WIDTH CALCULATIONS
}

});
0 голосов
/ 11 марта 2011

ура! Я понял. Воспроизведите код ниже для кого-то в подобной ситуации:

jQuery(document).ready( function ($) {   
  $('input').change(function() {
    var currentId = $(this).attr('id'),
    $parent = $(this).parents("td").children("div").children("div"),
    lengthId = $parent.find('input[id*="field-length-0-value"]'),
    length = lengthId.val(),
    lengthAtt = lengthId.attr('id'),
    widthId = $parent.find('input[id*="field-width-0-value"]'),
    width = widthId.val(),       
    widthAtt = widthId.attr('id'),
    areaId = $parent.find('input[id*="field-area-0-value"]'),
    area = areaId.val(),
    areaAtt = areaId.attr('id');


        if ((currentId == lengthAtt) && (area == 0)){
        areaId.val(length * area); //Area when l * w
        }
        if ((currentId == lengthAtt) && (width == 0)){
        widthId.val(area / length); //width when a / l
        }
        if ((currentId == widthAtt) && (area == 0)){
        areaId.val(width * length); //area when w * l
        }
        if ((currentId == widthAtt) && (length == 0)){
        lengthId.val(area / width); //length when a / w
        }
        if ((currentId == areaAtt) && (width == 0)){
        widthId.val(area / length);//width when a / l
        }
        if ((currentId = areaAtt) && (length == 0)){
        lengthId.val(area / width); //length when a / w 
        }
  });
});

Я уверен, что есть несколько мест, где его можно оптимизировать ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...