Я пытаюсь динамически обновить текстовое поле через поле ввода. Затем это будет связано с раскрывающимся списком со значениями. Мне также нужно указать срок, чтобы показать за 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, но ничего не похоже на то, что я пытаюсь достичь. Хотя я знаю, что ответ есть, я не уверен, что задаю правильный вопрос.
Ура
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
является входным элементом, а не значением. - С точки зрения удобства использования он будет пытаться обновляться только при изменении суммы, я думаю, что было бы лучше обновлять как изменение суммы, так и доставку.
Похожие вопросы
Новые вопросы
javascript
По вопросам программирования на ECMAScript (JavaScript/JS) и его различных диалектах/реализациях (кроме ActionScript). Обратите внимание, что JavaScript — это НЕ Java. Включите все теги, относящиеся к вашему вопросу: например, [node.js], [jQuery], [JSON], [ReactJS], [angular], [ember.js], [vue.js], [typescript], [стройный] и т. д.
amount
. Измените div наid="amountdiv"
. Я обновил ответ изменением jQuery. То же самое сdelivery
, вы должны изменить наdeliverydiv
. Сценарий: jsfiddle.net/3TMK8/3