每当更改另一个的值时,我想更改输入字段的值。
我已经尝试了一段时间,我似乎无法让它工作
<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);
}
答案 0 :(得分:11)
有几件事。
首先,如果我是你,我会使用最新版本的jQuery。 我们现在1.8。
我也使用&#34; keyup&#34;作为事件触发器以及&#34;更改&#34;。它在我看来更有用。我也喜欢使用jQuery绑定事件。请参阅http://api.jquery.com/on/
您的代码中存在一些错误。请注意$("$total_price_amount")
部分正在抛出错误
如果您只想显示设定的小数点数,请使用.toFixed()
。但请注意,这将返回一个字符串。
来自文本框的输入值为string
,因此要使用它们进行数学计算,您需要将它们解析为int
或float
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);
}
答案 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');
}))