[英]JQuery - populate two inputs with a percentage multiple of another input on change
[英]jquery two number inputs automatically recalculating each input if another is changed
我对html很好,但是对javascripting却不是很好:(我已经在stackoverflow上搜索了很多,并用谷歌搜索了它,但是没有找到我真正需要的东西,只有我发现与我差不多的东西需要的是http://jsfiddle.net/mrobin/QWSQp/64/
但是我需要两个输入:
<input type="text" name="num1" maxlength="15" oninput="this.value = this.value.replace(/[^0-9.]/g, ''); this.value = this.value.replace(/(\..*)\./g, '$1');" value="">
<input type="text" name="num2" maxlength="15" oninput="this.value = this.value.replace(/[^0-9.]/g, ''); this.value = this.value.replace(/(\..*)\./g, '$1');" value="" >
两者都设置有规则,即只有一个DOT的数字才可用:
oninput="this.value = this.value.replace(/[^0-9.]/g, ''); this.value = this.value.replace(/(\..*)\./g, '$1');
现在的问题,我有一个由php认证的X值
<?=$eur_price ?>
Point正在创建两个输入,其中一个是数量,第二个是总价格,但是每个字段都可以编辑,如果一个字段被编辑,则应重新计算另一个字段。
例:
X = 1.5(设定价格)... Num1 = 10,因此Num2将计算为15
X = 1.5(设置价格)... Num2 = 6,因此Num1将被计算为4,依此类推...这样您就可以设置您需要多少或您想花费多少...
任何帮助如何做到这一点,或如何编辑我发现的例子?
如果使用addEventListener,则可以通过一个事件来执行此操作,只需检查num1或num2是否已更改,num2是否已更改,calc num1是否已计算,calc1 num2是否已更改;
这是下面的一个简单示例。
const euro = 1.5; const num1 = document.querySelector("[name=num1]"); const num2 = document.querySelector("[name=num2]") document.body.addEventListener("input", function (evt) { if (evt.target === num1) { num2.value = (parseFloat(num1.value) * euro).toFixed(3); } else { num1.value = (parseFloat(num2.value) / euro).toFixed(3); } });
<input type="text" name="num1" maxlength="15"> <input type="text" name="num2" maxlength="15">
calculate
并将其绑定到num2
。 num1
input
事件中分派该事件。
前两个步骤必须应用于元素
num2
。
id
添加到您的输入中以获得更好的性能。 input
。 通过这种方法,您可以从任何地方触发事件计算
const calculate = new Event('calculate'); let n1 = document.getElementById("num1"); let n2 = document.getElementById("num2"); let eurPrice = 1.5; // -------- num1 logic --------- n1.addEventListener("input", function(e) { this.value = this.value.replace(/[^0-9.]/g, ''); this.value = this.value.replace(/(\\..*)\\./g, '$1'); n2.dispatchEvent(calculate); }); n1.addEventListener('calculate', function(e) { this.value = (n2.value / eurPrice).toFixed(2); }); // -------- num2 logic --------- n2.addEventListener("input", function(e) { this.value = this.value.replace(/[^0-9.]/g, ''); this.value = this.value.replace(/(\\..*)\\./g, '$1'); n1.dispatchEvent(calculate); }); n2.addEventListener('calculate', function(e) { this.value = (n1.value * eurPrice).toFixed(2); });
<input type="text" id="num1" name="num1" maxlength="15" value=""> <input type="text" id='num2' name="num2" maxlength="15" value="">
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.