Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xslt/3.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
Jquery 更改keyup上的输入值(2个输入)_Jquery_Keyup - Fatal编程技术网

Jquery 更改keyup上的输入值(2个输入)

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

这是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="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);
});