当输入在jquery中更改时更新变量

时间:2015-03-02 21:32:11

标签: javascript jquery html var

我试图创建一个简单的px到em转换器,当其中一个输入字段发生变化时,它会自动计算值。我已经获得了计算值的代码,但是当值发生变化时它不会更新。

继承HTML

<body>
    <h1>PX to EM converter</h1>

    <div id="base">
        <h2>Enter a base pixel size</h2>
        <input id="baseSize" value="16">
        <p>px</p>
    </div>

    <div id="px">
        <input id="pxInput" value="16">
        <p>px</p>
        <div id="emOutput2"></div>
    </div>
    <p>em</p>

    <div id="Em">
        <input id="emInput" value="1">
        <p>em</p>
        <div id="pxOutput2">
        </div>
        <p>px</p>
    </div>
</body>

和js

$(document).ready(function() {
    var baseSize2 = $('#baseSize').val();
    var pxInput = $('#pxInput').val();
    var emInput = $('#emInput').val();
    var emOutput = function() {
        return pxInput / baseSize2;
    };
    var pxOutput = function() {
        return emInput * baseSize2;
    };

    $('#baseSize').attr('value', baseSize2);
    $('#pxInput').attr('value', pxInput);
    $('#emInput').attr('value', emInput);
    $('#pxOutput2').html(pxOutput);
    $('#emOutput2').html(emOutput);
});

非常感谢任何帮助

2 个答案:

答案 0 :(得分:3)

目前,你没有什么可以听取输入框的变化。 jQuery的更改侦听器非常简单。

$('#baseSize').change(function() {
   // Code in here will run when the baseSize input is changed
   // Note that this must be inside your jQuery ready/onload function.
   // Note that this will **not** work with dynamically added elements
});

此外,更新输入时使用jQuery的值函数而不是访问属性。

$('#baseSize').attr('value', baseSize2);
// Should be
$('#baseSize').val(baseSize2);

答案 1 :(得分:1)

我为你创建了一个JSFiddle here

我已经在keyup事件中设置了它:

$("#pxInput").keyup(function(){
         var emOutput = function (){ return $('#pxInput').val()/$('#baseSize').val();};
         $('#emOutput2').html(emOutput);
    });
    $("#emInput").keyup(function(){
         var pxOutput = function (){ return $('#emInput').val()/$('#baseSize').val();};
         $('#pxOutput2').html(pxOutput);
    });