0
我嘗試基於用戶輸入在結帳頁上應用折扣。用戶進入他的賬戶並按下按鈕,他可以對他目前的購買申請折扣。提交時,他將被重定向到應用折扣的結帳頁面。這只是一種將信息發送到另一個表單的表單。JSTL <c:choose>無法識別表單輸入整數
我有幾個外部JavaScript文件處理折扣功能。我只根據c:choose
的條件調用我需要的腳本。問題是,jstl無法識別整數,並將所請求的input
作爲null
的值處理。它始終是第一個腳本,即noDiscount.js
正在執行,無論輸入中的value
是什麼。
由於數據類型不兼容導致此錯誤?該腳本正在尋找一個整數,而我發送一個字符串...如何解決這個問題?
userAccount.jsp
<form method='POST' name='DiscountForm' action='applyDiscount'>
<input class="discount" readonly name="discount" type="text" value="<%= resultset.getString("discount")%>"/>
<input type='submit' style="border:none; padding:1%; background:black; color:white; cursor:pointer;" value='Apply Discount'>
</form>
checkout.jsp
<head>
<c:choose>
<c:when test="${discountValue == null}"><script type="text/javascript" src="js/noDiscount.js"></script></c:when>
<c:when test="${discountValue == 10}"><script type="text/javascript" src="js/discount(10).js"></script></c:when>
</c:choose>
</head>
<body>
<c:set var="discountValue" value="<%= request.getParameter("discount")%>"/>
<input class="discount" style="background:#eaeaea;" readonly id="userDiscount" name="applied_discount" type="text" value="${discountValue}"/>
</body>
noDiscount.js (當已進入無折扣正規的銷售稅計算器):
function applyTax(){
var cartSubTotal = parseFloat(document.getElementById('cartSubtotal').innerHTML);
console.log(cartSubTotal);
var salesTaxGst = (cartSubTotal/100) * 5;
var salesTaxPst = (cartSubTotal/100) * 9.975;
var totalAmount = (cartSubTotal*1) + (salesTaxGst * 1) +(salesTaxPst * 1) ;
document.getElementById('cartSubtotal').innerHTML = cartSubTotal.toFixed(2);
document.getElementById('taxGst').innerHTML = salesTaxGst.toFixed(2);
document.getElementById('taxPst').innerHTML = salesTaxPst.toFixed(2);
var elements = document.getElementsByClassName('cartTotal');
for(var i = 0; i < elements.length; i++) {
elements[i].value = totalAmount.toFixed(2);
}
}
window.onload = function() {
applyTax();
};
折扣(10).js文件 (適用10%的折扣)
function applyTax(){
var userDiscount = parseFloat(document.getElementById('userDiscount').innerHTML);
var cartSubTotal = parseFloat(document.getElementById('cartSubtotal').innerHTML);
console.log(userDiscount);
console.log(cartSubTotal);
var newDiscount = (cartSubTotal/100) * 10;
var salesTaxGst = (cartSubTotal/100) * 5;
var salesTaxPst = (cartSubTotal/100) * 9.975;
var totalAmount = (cartSubTotal*1) - (newDiscount*1) + (salesTaxGst * 1) +(salesTaxPst * 1) ;
document.getElementById('userDiscount').innerHTML = newDiscount.toFixed(2);
document.getElementById('cartSubtotal').innerHTML = cartSubTotal.toFixed(2);
document.getElementById('taxGst').innerHTML = salesTaxGst.toFixed(2);
document.getElementById('taxPst').innerHTML = salesTaxPst.toFixed(2);
var elements = document.getElementsByClassName('cartTotal');
for(var i = 0; i < elements.length; i++) {
elements[i].value = totalAmount.toFixed(2);
}
}
window.onload = function() {
applyTax();
};
設置變量你'C使用前:choose',所以把線'「/>'在'c:choose'中使用var之前 –