on-change-attribute未在thymeleaf中初始化

x7rlezfr  于 2021-07-26  发布在  Java
关注(0)|答案(1)|浏览(282)

将javascript集成到thymeleaf模板中有以下问题。下表列出了不同的输入字段,其中填充了模型中的数据。此外,对于每个输入字段,我都有一个隐藏的附加输入字段。其思想是,当我更改nothidden输入标记时,隐藏的标记将接收新的值

<tr th:each=" item : ${products}">
                            <td>
                                <input class="form-control" type="text" th:value="${item.product.name}" id="productName" name="productName" />
                            </td>
                            <td>
                                <input class="form-control" type="text" th:value="${{item.product.price}}" id="productPrice" name="productPrice" />
                            </td>
                            <td>
                                 <input class="form-control" type="text" th:onchange="substituteOnClick()" th:value="${item.quantity}" id="quantityItem" name="quantityItem" />
                            </td>
                            <td>
                                <input class="form-control" type="text" th:value="${item.MinQuantity}" th:onchange="substituteOnClick()" id="minquantityItem" name="minquantityItem" />
                            </td>

                            <td>
                                <form th:action="@{/deleteWarehouseItem/{id_del}/(id_del=${item.id})}" method="post" role="form" class="ui form">
                                <button type="submit" class="ui form" name = "itemDel" th:value="${item.id}">Löschen</button>
                                </form>
                            </td>
                            <td>
                            <form class="ui form" method="post" th:action="@{/updateItem}" >
                                <input type="hidden" name="productName_mvc" id="productName_mvc" value="0" th:value="${item.product.name}"/>
                                <input type="hidden" name="productPrice_mvc" id="productPrice_mvc" value="0" th:value="${{item.product.price}}"/>
                                <input type="hidden" name="quantityItem_mvc" id="quantityItem_mvc" value="0" th:value="${item.quantity}"/>
                                <input name="minquantityItem_mvc" id="minquantityItem_mvc" value="0" />
                                <input type="hidden" name="inventoryIdentifier_mvc" id="inventoryIdentifier_mvc" th:value="${item.id}"/>
                                <button type="submit" class="ui labeled icon button" name = "updateItem" th:text="#{management.updateItem}">

                                </button>
                            </form>
                            </td>

                        </tr>

这是我的javascript文件

function substituteOnClick() {
    var pN=document.getElementById("productName").value;
    var pP=document.getElementById("productPrice").value;
    var qI=document.getElementById("quantityItem").value;
    var MqI=document.getElementById("minquantityItem").value;

    document.getElementById("productName_mvc").value=pN;
    document.getElementById("productPrice_mvc").value=pP;
    document.getElementById("quantityItem_mvc").value=qI;
    document.getElementById("minquantityItem_mvc").value=MqI;

}

正如您所看到的,我的问题是,对于每一行,我需要两个按钮来执行不同的操作,因为我认为更改隐藏输入的值是有用的。这是可能的,因为我只在需要更新对象时才使用隐藏输入,而且它主要发生在更改事件上。但我的问题是,即使我在非隐藏输入中写入任何新内容,它也不会影响我的隐藏输入。我没有隐瞒他们中的任何一个。如何可能通过先改变其他输入中的值来改变其他输入中的值。最美好的祝福

hvvq6cgz

hvvq6cgz1#

首先,您需要从此行中删除这些额外的括号

<input class="form-control" type="text" th:value="${{item.product.price}}" id="productPrice" name="productPrice" />

然后在javascript中,使用console.log()检查onchange事件是否获取更改值

console.log("In js function");
console.log(qI);

如果没有获得这些值,则不使用onchange事件,而是为每个输入或所有输入添加一个按钮,在窗体内使用单个按钮,然后使用onclick函数或onsubmit,如下所示:

<form onsubmit="return substituteOnClick()">
   <td>
       <input class="form-control" type="text" th:value="${item.product.name}" id="productName" name="productName" />
   </td>
   <td>
        <input class="form-control" type="text" th:value="${item.product.price}" id="productPrice" name="productPrice" />
    </td>
    <td>
        <input class="form-control" type="text"  th:value="${item.quantity}" id="quantityItem" name="quantityItem" />
     </td>
     <td>
          <input class="form-control" type="text" th:value="${item.MinQuantity}" id="minquantityItem" name="minquantityItem" />
     </td>
<input type="submit" name="Submit" value="Submit"/>
</form>

如果有用的话请告诉我

相关问题