尝试使用 Struts 2 中 <s:iterator> 标签内的 `onchange` 事件设置属性值时出现的问题

问题描述 投票:0回答:1

我使用的是Struts 2.1.6。我在尝试使用

onchange
标签内的
<s:iterator>
事件设置属性值时遇到问题。

<s:iterator value="myList" status="rowStatus">      
 <tr>
    <td><s:textfield name="myList[%{#rowStatus.index}].abc" value="%{model[#rowStatus.index].abc}"  onchange="myList[%{#rowStatus.index}].changeFlag = "true"/></td>
    <td><s:textfield name="myList[%{#rowStatus.index}].changeFlag" value="%{model[#rowStatus.index].changeFlag}" /></td>
 </tr>
</s:iterator>

列表

myList
有多个对象,如果任何特定行的
abc
属性的值发生更改,那么我尝试将
changeFlag
的值设置为
true
。然而它不起作用。

如何做?

javascript html jsp struts2 struts-tags
1个回答
0
投票

onchange
标签中的
s:textfield
属性是

在渲染的 HTML 元素上设置 HTML
onchange
属性

渲染的 html 元素是

<input type="text">
。对于此元素,
onchange
属性定义了一个 JavaScript 函数来处理事件。所以你可以创建一个函数
doChange()
。但在此之前你需要添加
id
属性

HTML id 属性

这允许通过

id
来定位文档中的元素。

<s:iterator value="myList" status="rowStatus">      
 <tr>
    <td><s:textfield id="myList[%{#rowStatus.index}].abc" name="myList[%{#rowStatus.index}].abc" value="%{model[#rowStatus.index].abc}"  onchange="doChange('myList[%{#rowStatus.index}].changeFlag')"/></td>
    <td><s:textfield id="myList[%{#rowStatus.index}].changeFlag" name="myList[%{#rowStatus.index}].changeFlag" value="%{model[#rowStatus.index].changeFlag}" /></td>
</tr>
</s:iterator>
<script>
function doChange(dest) {
 document.getElementById(dest).value = 'true';
} 
</script>  

P.S.:您使用的 Struts 版本太旧(2.1.6)。您应该知道如何获取更新版本。请参阅如何了解 Struts 2 的版本

© www.soinside.com 2019 - 2024. All rights reserved.