【发布时间】:2021-09-04 02:10:43
【问题描述】:
我正在尝试通过 JavaScript 从表单字段的变化值中获取 totalPrice 值。
我的观点:
if request.method == "POST":
if (not closed):
form = BookingForm(request.POST)
if form.is_valid():
booking = form.save(commit=False)
booking.author = user
booking.hotelName = hotel.name
booking.save()
success = "Success!"
else:
return render(request, "hotels/hotel.html", {
"form": form
})
messages.info(request, success)
return HttpResponseRedirect(reverse("hotel", args=(hotel.id,)))
else:
return render(request, "hotels/hotel.html", {
"hotel": hotel,
"closed": closed,
"message": message,
"form": BookingForm()
})
我的 HTML + JS 代码:
{% if not closed %}
<div class="container login">
<h2>Book Now!</h2>
<form method="POST">
{% csrf_token %}
<div class="form-group">
{{ form.as_p }}
</div>
<div class="form-group">
<input type="submit" name="button" id="submit" value="Book">
</div>
</form>
</div>
{% endif %}
<script>
let price = 0;
const check = (id) => {
if(document.querySelector(`#${id}`).checked) {
price += 300;
document.querySelector('#totalPrice').value = `${price}`;
}
if(!document.querySelector(`#${id}`).checked) {
if (!price <= 0) {
price -= 300;
document.querySelector('#totalPrice').value = `${price}`;
}
}
}
document.addEventListener('DOMContentLoaded', function() {
document.querySelector("#breakfast").addEventListener('click', () => check("breakfast"));
document.querySelector("#dinner").addEventListener('click', () => check("dinner"));
})
</script>
还有,我的表单(通过 ModelForm):
class BookingForm(ModelForm):
class Meta:
model = Booking
fields = ['includeBreakfast', 'includeDinner', 'totalPrice']
labels = {
'includeBreakfast': 'Include Breakfast',
'includeDinner': 'Include Dinner',
'totalPrice': 'Total Price (in USD)'
}
#Visual stuff
totalPrice 是模型中的FloatField,但是当我尝试从 POST 中检索此值时,它会产生None,但我希望它采用动态变化的值。
【问题讨论】:
-
你的 js 代码能用吗?
-
不是真的,它给出了一个错误,但我找到了解决方案。有关第一个答案 cmets 的更多信息
标签: javascript django django-models django-forms