javascript - 如何强制输入值根据第三个输入的变化而变化?

标签 javascript html css

<分区>


关闭 3 年前

事情是这样的。我有一个输入值必须与另一个输入值相等。虽然,第二个输入与另一个输入的 onchange 事件相关。例如:

输入 1:计算 2+2、4+4 或任何其他数字
输入 2:在输入 1 发生变化时,获取其值
输入 3:在输入 2 发生变化时,获取其值

事实是,当输入 2 的值因输入 1 而改变时,输入 3 不会改变,除非我手动更改输入 2。

谁能帮我看看这是怎么回事?

我还没有实际尝试过,因为我不知道解决这个问题的任何其他方法。

function f_mezanino() {

  if (document.getElementById('mezanino').checked) {
    document.getElementById("s_alt_max_fac").value = "14";
    document.getElementById("s_alt_max_fac").max = "14";
    document.getElementById("s_alt_max_cum").value = "18";
    document.getElementById("s_alt_max_cum").max = "18";
  } else {
    document.getElementById("s_alt_max_fac").value = "11";
    document.getElementById("s_alt_max_fac").max = "11";
    document.getElementById("s_alt_max_cum").value = "15";
    document.getElementById("s_alt_max_cum").max = "15";
  }
}

function f_legislacao() {
  var alt_max_fac = document.getElementById("s_alt_max_fac").max;
  document.getElementById("s_alt_max_fac_read").value = alt_max_fac;
}
<input id="mezanino" type="checkbox" name="s_mezanino" onclick="f_mezanino();"> Utilizar mezanino<br>

<input id="s_alt_max_fac" name="s_alt_max_fac" type="number" value="11" step="0.01" min="0" max="11" onchange="f_legislacao();">

<input id="s_alt_max_fac_leg" name="s_alt_max_fac_leg" type="text" value="11" readonly>

最佳答案

根据你提供的codepen,可以使用EventTarget.dispatchEvent()要手动触发 DOM 事件,请记得检查兼容性。

    function f_mezanino() {
        if (document.getElementById('mezanino').checked) {
            document.getElementById("s_alt_max_fac").value = "14";
            document.getElementById("s_alt_max_fac").max = "14";
        } else {
            document.getElementById("s_alt_max_fac").value = "11";
            document.getElementById("s_alt_max_fac").max = "11";
        }
        //Dispatch change event here
        var element = document.getElementById("s_alt_max_fac");
        var event = new Event('change');
        element.dispatchEvent(event);
   }

   function f_legislacao() {
       //make s_alt_max_fac_leg change with s_alt_max_fac's the value
       var alt_max_fac_value = document.getElementById("s_alt_max_fac").value;
       document.getElementById("s_alt_max_fac_leg").value = alt_max_fac_value;
   }

如果您能够使用 jQuery,那么执行此操作的方法会更短

$("#s_alt_max_fac").trigger("change");

关于javascript - 如何强制输入值根据第三个输入的变化而变化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57517939/

上一篇:html - 使用 mozilla firefox 打印时如何修复页面被截断

下一篇:css - 在媒体查询中使用 rem 单位作为宽度

相关文章:

css - 同步 CSS 动画时间(从 到 )

javascript - 在运行任何其他 JavaScript 之前在 UIWebView 中运行 JavaScript

javascript - 在 JavaScript 中处理大型(12K+ 行)数组

php - 如何使用 php 定位 mysql 查询表结果中的特定单元格

javascript - 带 Glyphicon 的按钮比带文本的按钮小

javascript - DHTML 下拉菜单在 IE7 中不起作用

javascript - 如何将属性名称设置为变量?

Javascript console.log(object) 与连接字符串

html - 使用 SASS/BEM/Grandparent/parent/child/selector/:hover

javascript - 页面加载时禁用链接,5 秒后启用链接 - Javascript