我正在尝试通过输入字段动态更新文本字段。然后,这将链接到带有值的下拉列表选择。我还需要显示从今天开始提前30天显示的截止日期。
这是我的HTML:
<div>
<label for="payment">Payment:</label>
<input type="text" name="amount" id="amount" onChange="myfunction()"/>
<br /><br />
<label for="delivery">Delivery:</label>
<select id="delivery" name="delivery">
<option value="1">Fast</option>
<option value="2">Medium</option>
<option value="3">Slow</option>
</select>
</div>
<br />
<div>
Payment Breakdown: <br /><br />
Payment:
<div name="amount" id="amount"></div>
Freight:
<div name="delivery" id="delivery"></div>
Total Payment:
<div name="total" id="total"></div>
Due Date:
<div name="date" id="date"></div>
</div>
我正在努力使用Javascript部分并将它们整合在一起。
我已经达到了这一点,现在我被困住了。 (我知道的不是很远)
function myFunction()
{
var amount = document.getElementById("amount");
var delivery = parseInt($(this).find("option:selected").val());
total = amount + delivery
$("#total").html(total);
};
我查看了Stackoverflow和Google上的示例,但似乎没有什么似乎与我想要实现的相似。虽然我知道答案就在那里,但我不确定我是否在问正确的问题。
干杯
答案 0 :(得分:1)
我会改变它。这里我有一个updateCost()
函数,当更改金额或更改交付时调用该函数。我还添加了代码来处理截止日期。
从金额中删除内联onchange
事件:
<input type="text" name="amount" id="amount"/>
使用Javascript:
function updateCost()
{
var amount = $('#amount').val();
var delivery = parseInt($('#delivery').val());
var total = amount + delivery
$("#total").html(total);
$("#amountdiv").html(amount);
$("#deliverydiv").html(delivery);
// handle the due date
var todayPlus30 = new Date();
todayPlus30.setDate(todayPlus30.getDate()+30);
var dateStr = todayPlus30.getDate() + "/" + (todayPlus30.getMonth()+1) + "/" + todayPlus30.getFullYear();
$('#date').html(dateStr);
}
$(document).ready(function(){
$('#amount').change(function(){ updateCost(); });
$('#delivery').change(function(){ updateCost(); });
});
您的原始代码存在一些问题:
this
实际上不是你的任何元素时你在函数中使用this
(你没有将它作为参数传递)。amount
是输入元素而不是值时,在计算中使用amount
。