JQuery:更改其他输入字段的值时更改值

时间:2012-09-05 18:57:58

标签: javascript jquery html

每当更改另一个的值时,我想更改输入字段的值。

我已经尝试了一段时间,我似乎无法让它工作

<input class="span4 input-big" id="dare_price" name="price" size="30" type="text" onChange="updatePrice()" />
<input class="span4 input-big" id="total_price_amount" readonly="readonly" value=""/>​


function updatePrice() {
    var price = $("#dare_price").val();
    var total = (price + 1) * 1.05;
    $("$total_price_amount").val(total);
}​

Here's the fiddle.

5 个答案:

答案 0 :(得分:11)

有几件事。

  1. 首先,如果我是你,我会使用最新版本的jQuery。 我们现在1.8。

  2. 我也使用&#34; keyup&#34;作为事件触发器以及&#34;更改&#34;。它在我看来更有用。我也喜欢使用jQuery绑定事件。请参阅http://api.jquery.com/on/

  3. 您的代码中存在一些错误。请注意$("$total_price_amount")部分正在抛出错误

  4. 如果您只想显示设定的小数点数,请使用.toFixed()。但请注意,这将返回一个字符串。

  5. 来自文本框的输入值为string,因此要使用它们进行数学计算,您需要将它们解析为intfloat

    < / LI>

    这是我更新的JSFiddle

    http://jsfiddle.net/DigitalBiscuits/QWSQp/71/

    我使用的实际代码

    $(document).ready(function()
    {
        function updatePrice()
        {
            var price = parseFloat($("#dare_price").val());
            var total = (price + 1) * 1.05;
            var total = total.toFixed(2);
            $("#total_price_amount").val(total);
        }
        $(document).on("change, keyup", "#dare_price", updatePrice);
    });
    

    注意我已从HTML中删除onChange="updatePrice()"部分,因为它不再需要。

    希望这会对你有所帮助。

答案 1 :(得分:4)

$("#dare_price").change(function(){
   var total = Number($this).val()) + ...;
   $('#total_price').val(total);
});

如果以编程方式更改值,则需要通过方法对其进行管道处理 -

function changePrice(value){
   $('#dare_price').val(value);
   $('#dare_price').trigger('change');
}

Updated DEMO用于此事件驱动的方法。

答案 2 :(得分:2)

为了安全起见,您应parseFloat()价格。此外,在执行任何此操作之前,您应该确保它甚至是一个数字开头!否则,您将获得 NaN

function updatePrice() {
    var price = $("#dare_price").val();
    var total = (parseFloat(price) + 1) * 1.05;
    console.log(total);

    // Other big problem was the $total_price_amount typo that should of had # instead
    $("#total_price_amount").val(total);
}​

jsFiddle Demo

答案 3 :(得分:1)

看起来像拼写错误

$("$total_price_amount").val(total);

应该是

$("#total_price_amount").val(total);

使用“#”获取ID

答案 4 :(得分:0)

这是一个改变事件的例子。您可以使用keydown或-up等事件,以适合您的目的。(live-method用于在运行时创建的元素。)

  $('#first').live("change", (function(){       
            $('#idofinputfield').val('mynewvalue');         
    }))