代码之家  ›  专栏  ›  技术社区  ›  user2411290

无法在Spring Boot应用程序中获取要更改的按钮(即从“添加到购物车”更改为“删除”)

  •  0
  • user2411290  · 技术社区  · 6 年前

    我有一个应用程序,用户可以添加项目到他们的购物车。他们的cart使用Spring数据JPA持久化,并保存在MySQL数据库中。无论如何,我希望“添加到购物车”文本更改为“删除”,然后反之亦然,当再次单击按钮。

    我尝试过不同的方法,例如使用常规JS和尝试更改innerHTML,以及我在这里找到的一些JQuery方法,但似乎无法更改。当前位于index.html文件脚本中的代码只是我尝试过的代码的一个例子。

    另外,为了清楚起见,add-to-cart正在工作。只是点击时没有改变。

    谢谢你的帮忙。

    index.html索引

    <!DOCTYPE html>
    <html lang="en" xmlns:th="http://www.thymeleaf.org"
        xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout"
          layout:decorate="~{fragments/main_layout}">
    
    <head th:replace="fragments :: head"></head>
    <body>
    
    <nav th:replace="fragments :: navigation"></nav>
    
    <h1 th:text="${title}" class="display-5">Add Cheeses</h1>
    
    <p th:unless = "${cheeses} and ${cheeses.size()}">No Items</p>
    
    <table class="table">
    
        <tr>
    
            <th>Name</th>
            <th>Description</th>
            <th>Category</th>
            <th>Price</th>
            <th></th>
        </tr>
    
        <tr th:each ="cheese : ${cheeses}">
    
            <td th:text ="${cheese.name}"></td>
            <td th:text ="${cheese.description}"></td>
            <td th:text="${cheese.type}"></td>
            <td th:text ="${cheese.price}"></td>
            <td>
                <form method="post">
                    <button type="submit" id="changeBtn" onclick="myFunction()" class="btn btn-success btn-sm" name = "cheeseId" th:value="${cheese.id}" th:id="${cheese.id}">Add to Cart</button>
                </form>
            </td>
        </tr>
    </table>
    
    </div>
    
    <script type="text/javascript">
    
        function myFunction() {
            if (document.getElementById("changeBtn").innerHTML == "Add to Cart") {
                document.getElementById("changeBtn").innerHTML = "Remove";
            }
            else document.getElementById("changeBtn").innerHTML = "Add to Cart";
        }
    
    </script>
    
    </body>
    </html>
    

    片段.html

    <!DOCTYPE html>
    <html lang="en"  xmlns:th="http://www.thymeleaf.org"
          xmlns:sec="http://www.thymeleaf.org/extras/spring-security">
    <head th:fragment="head">
        <meta charset="UTF-8"/>
        <title th:text = "${title}"></title>
    
        <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootswatch/4.1.1/materia/bootstrap.min.css">
    
        <script th:src="@{webjars/jquery/jquery.min.js}"></script>
        <script th:src="@{webjars/jquery/bootstrap.min.js}"></script>
    
    </head>
    
    <nav class="navbar navbar-expand-lg navbar-dark bg-primary" th:fragment="navigation">
        <a class="navbar-brand" href="#">Shop</a>
        <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarColor01" aria-controls="navbarColor01" aria-expanded="false" aria-label="Toggle navigation">
            <span class="navbar-toggler-icon"></span>
        </button>
    
        <div class="collapse navbar-collapse" id="navbarColor01">
            <ul class="navbar-nav mr-auto">
                <li class="nav-item active" sec:authorize="isAuthenticated()">
                    <a class="nav-link" href="/cheese">List</a>
                </li>
                <li class="nav-item" sec:authorize="isAuthenticated()">
                    <a class="nav-link" href="/cheese/add">Add</a>
                </li>
                <li class="nav-item" sec:authorize="isAuthenticated()">
                    <a class="nav-link" href="/cheese/remove">Remove</a>
                </li>
                <li class="navbar-right" sec:authorize="isAuthenticated()">
                    <a class="nav-link" href="/cheese/account">Account</a>
                </li>
                <li class="navbar-right" sec:authorize="!isAuthenticated()">
                    <a class="nav-link" href="/cheese/login">Login</a>
                </li>
                <li class="navbar-right" sec:authorize="!isAuthenticated()">
                    <a class="nav-link" href="/cheese/signup">Signup</a>
                </li>
            </ul>
    
            <form class="form-inline my-2 my-lg-0" th:action="@{/logout}" method="post" sec:authorize="isAuthenticated()">
                <input class="form-control mr-sm-2" type="hidden" />
                <button class="btn btn-secondary my-2 my-sm-0" type="submit">Logout</button>
            </form>
        </div>
    </nav>
    <body>
    
    </body>
    </html>
    
    1 回复  |  直到 6 年前
        1
  •  0
  •   Singgih Suryo P    6 年前

    如果按钮类型为“提交”,Onclick函数将不会触发。最简单的方法是将按钮类型更改为“button”,然后在javascript函数上手动提交表单。有个好办法 here