我正在使用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 。但它不起作用。
怎么做?
答案 0 :(得分:0)
s:textfield
代码中的onchange
属性为
在渲染的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)。你应该知道如何获得更新的版本。请参阅How to know a version of Struts 2。