Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/84.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript jQuery中有三个字段的面积计算器(基于缺失值计算)_Javascript_Jquery_Math_Area - Fatal编程技术网

Javascript jQuery中有三个字段的面积计算器(基于缺失值计算)

Javascript jQuery中有三个字段的面积计算器(基于缺失值计算),javascript,jquery,math,area,Javascript,Jquery,Math,Area,我正在使用一个计算器,它有三个字段:“长度”、“宽度”、“面积”,“面积”等于“长度”x“宽度”。然而,我的客户机需要能够更新这些字段中的任意两个,以获得第三个字段——我当前的字段仅在长度或宽度发生变化时计算面积,而没有能力计算缺少的值 jQuery(document).ready( function ($) { $('input').change(function() { var $parent = $(this).parents("td").children("div").chi

我正在使用一个计算器,它有三个字段:“长度”、“宽度”、“面积”,“面积”等于“长度”x“宽度”。然而,我的客户机需要能够更新这些字段中的任意两个,以获得第三个字段——我当前的字段仅在长度或宽度发生变化时计算面积,而没有能力计算缺少的值

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); 
  });
});
,

修改区域时,如何更新长度或宽度?


非常感谢

给每个输入一个唯一的id,然后:

$('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
}

});

胡萨!我想出来了。为处于类似情况的人复制以下代码:

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 
        }
  });
});

我相信有几个地方可以优化它

这太模棱两可了。当面积改变时,长度可以改变,宽度可以改变,或者两者都改变。你想让长度和宽度都以相同的比例变化吗?我应该更清楚,抱歉。用户将始终具有3个值中的2个——长度和面积、宽度和面积或长度和宽度。若长度或宽度发生变化,那个么面积应该重新计算——这已经发生了。如果面积有一个值,而长度或宽度没有,则缺少的值应根据面积除以现有值来计算。每个值都有一个唯一的ID,但我事先不知道它是什么——请查看上面帖子中的“源”链接,这段代码与允许可重复表单元素的Drupal CCK组件交互。这相当混乱,我不太确定您要做什么?只要顺序没有改变,你就可以把所有的输入组成一个数组,对它们进行编号,然后确定每个框都来自哪个。显然,拥有ID会更好,但我不熟悉CCK。我知道HTML部分真的令人望而生畏。简言之,有一系列房间,每个房间有三行:高度、宽度、面积(还有其他单位字段,但暂时忽略这些字段)。用户可以通过单击按钮添加另一行。上述三个输入的ID如下:edit-field-room-0-value-field-length-0-value、edit-field-room-0-value-field-width-0-value和edit-field-room-0-value-field-area-0-value;当添加新行时,它将变成edit-field-room-1-value-field-length-0-value、edit-field-room-1-value-field-width-0-value和edit-field-room-1-value-field-area-0-value。我感觉需要一组条件,因此给出+10作为帮助。谢谢