我有一种情况,当用户单击页面A中的按钮时,该按钮将消失并转到页面B。当用户返回页面A时,该按钮仍将消失。是否有可能做到这一点?这听起来合乎逻辑吗?
<table>
<tr>
<th>Booking Number</th>
<th>checkin</th>
<th>checkout</th>
<th>Num. of days</th>
<th>Total Charges</th>
<th>Breakfast</th>
<th>accommodation ID</th>
</tr>
<c:forEach items="${books}" var="book">
<tr>
<td><c:out value="${book.bookingnum}" /></td>
<td><c:out value="${book.checkin}" /></td>
<td><c:out value="${book.checkout}" /></td>
<td><c:out value="${book.numofdays}" /></td>
<td><c:out value="${book.totalcharges}" /></td>
<td><c:out value="${book.bfast}" /></td>
<td><c:out value="${book.accid}" /></td>
<td>
<form name="reserveSubmitForm" method="post" action="Payment1Controller?action=createPayment&bookingnum=<c:out value="${book.bookingnum}"/>">
<input type="submit" class="btn btn-primary btn-block" value="Pay">onclick="style.display = 'none'"
<input type="hidden" name="totalcharges" id="totalcharges" value="${book.totalcharges}"/>
</form>
</td>
</tr>
</c:forEach>
</table>
答案 0 :(得分:2)
单击按钮后,可以在sessionStorage
中设置一个值。另外,在页面加载时,请检查该值是否存在于sessionStorage
中,如果存在,请隐藏该按钮。例如:
<a href="foo">foo</a>
JS:
const a = document.querySelector('a');
if (sessionStorage.clickedA) a.style.display = 'none';
a.addEventListener('click', () => {
sessionStorage.clickedA = 'clicked';
});
https://jsfiddle.net/qfsuLyc3/
我认为cookie不是一个好主意,因为它的信息似乎只与客户端有关,而与服务器无关。 (Cookie将发送到服务器)
sessionStorage
在页面会话中保持不变。如果您希望即使在重新打开浏览器后也隐藏按钮,请改用localStorage
,它使用文件系统而不是内存,并且是持久的。
答案 1 :(得分:0)
如果您暂时想使用此功能,则可以使用 GET 方法。您可以在第二页到第一页的URL中传递一个附加值,并检查该值是否存在。
示例:
<a href="pageOne.php?movingback=true">Go To Page One</a>
在第一页上,检查后退的存在(我正在使用php进行相同操作)
<?php if(!isset($_GET['movingback']) || !$_GET['movingback']=='true'){
echo "<a href='pagetwo.php'>Go To Page Two</a>"
}