Jquery 更改keyup上的输入值(2个输入)
这是html代码:Jquery 更改keyup上的输入值(2个输入),jquery,keyup,Jquery,Keyup,这是html代码: <form> <label for="item1">Number 1</label> <input type="text" id="item1"> <label for="item2">Number 2</label> <input type="text" id="item2"> </form> <form> <input type="text" id="re
<form>
<label for="item1">Number 1</label>
<input type="text" id="item1">
<label for="item2">Number 2</label>
<input type="text" id="item2">
</form>
<form>
<input type="text" id="result1" disabled>
<input type="text" id="result2" disabled>
</form>
榜样
输入id的item1和item2相互计算(*50或/50)。
我只需要输入一个数字来输入“item1”就可以得到结果。如何通过使用“item1”在“item2”中键入一个数字来更新结果?您现在没有在“item2”上查找更改,这就是为什么它没有更新结果输入。由于有很多输入需要更新,我建议将其拆分为一个函数
function updateResults() {
var input1 = parseFloat($('#item1').val());
foo = Math.round(input1 * 13.99);
$('#result1').val(foo);
// Similarly,
// calculate: item1 * 15.99 = write to id "result2"
// calculate: item1 * 18.99 = write to id "result3"
// calculate: item1 * 25.99 = write to id "result4"
}
// calculate: item1 x 50 = write to id "item2"
$('#item1').keyup(function () {
var foo = parseFloat($(this).val());
foo = Math.round(foo * 50);
$('#item2').val(foo);
updateResults();
});
// calculate: item2 / 50 = write to id "item1"
$('#item2').keyup(function () {
var foo = parseFloat($(this).val());
foo = Math.round(foo / 50);
$('#item1').val(foo);
updateResults();
});
希望这有帮助
jshiddle-我想我终于明白了你的意图 因此,基本上,您可以将代码简化为一个
函数
来计算结果,另一个函数用于处理两个输入上的键控事件
:
$(function () {
function calculate() {
var el = $(this);
var el1 = $('#item1');
var el2 = $('#item2');
var val1 = parseFloat(el1.val());
var val2 = parseFloat(el2.val());
if (el.attr('id') == el1.attr('id')) {
val2 = Math.round(val1 * 50);
el2.val(val2);
}
else {
val1 = Math.round(val2 / 50);
el1.val(val1);
}
$('#result1').val(Math.round(val1 * 13.99));
$('#result2').val(Math.round(val1 * 15.99));
}
$('#item1, #item2').on('keyup', calculate);
});
您的上一个选择器有一个输入错误。它应该是:$(“#item2”)
无论如何,您可以将这4个处理程序合并为两个,每个输入一个,或者更好,合并为一个。最后一个选择器是正确的。它应该是#item1,因为我只能用#item1中的数字进行计算。item1*13.99,item1*15.99,…我知道问题出在哪里了。我已经发布了一个答案。@decibel-没问题,很乐意帮助:)如果有任何答案解决了你的问题,你需要将它标记为解决方案。
$(function () {
function calculate() {
var el = $(this);
var el1 = $('#item1');
var el2 = $('#item2');
var val1 = parseFloat(el1.val());
var val2 = parseFloat(el2.val());
if (el.attr('id') == el1.attr('id')) {
val2 = Math.round(val1 * 50);
el2.val(val2);
}
else {
val1 = Math.round(val2 / 50);
el1.val(val1);
}
$('#result1').val(Math.round(val1 * 13.99));
$('#result2').val(Math.round(val1 * 15.99));
}
$('#item1, #item2').on('keyup', calculate);
});