[英]Update the form on select change Struts2
我在表单外有select标签,在select的onchange事件中,我发布了anchor标签的listenTopics并在json中得到了结果,这是正确的,但它用json数据替换了表单,我需要更新表单。 任何想法这里可能有什么问题,或者有其他方法可以做到这一点。
<script type="text/javascript">
function reloadForm() {
$.publish('reloadFormList');
}
</script>
<div id="body" style="text-align: center;width: 100%;">
<s:form id="formSelect" style="margin-top:20px;">
<s:select list="model.classList" name="model.selectedID"
listKey="classID" listValue="className" headerKey="-1"
headerValue="" theme="simple" label="Class"
style="margin-bottom:10px;" onchange="reloadForm();" />
<sj:a formIds="formSelect" href="getEmailSett" targets="form"
style="display:none;" listenTopics="reloadFormList"></sj:a>
</s:form>
<s:form id="form">
<s:checkbox label="OPtion1" title="OPtion1" name="model.chk_option1"
style="margin-top:20px;"></s:checkbox>
<s:checkbox label="OPtion2" title="OPtion2" name="model.chk_option2"
style="margin-top:20px;"></s:checkbox>
<sj:submit id="formSubmit" href="mysubmit" value="Update"
indicator="indicator" button="true" />
</s:form>
</div>
我只是告诉你你在做什么错,因为有很多关于同一主题的问题。 一个常见的错误是将targets
用于json结果。 应该使用targets
加载html / javascript内容。 如果要处理json结果,则不应编写此类丑陋的代码
<sj:a formIds="formSelect" href="getEmailSett" targets="form"
style="display:none;" listenTopics="reloadFormList"></sj:a>
在reloadForm()
您应该通过$.ajax()
或$.getJSON()
以及在用于修改DOM的回调成功函数中编写一个普通的ajax调用。
如果仍继续使用targets
,则应将触发操作的结果更改为dispatcher
以返回html / javascript内容。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.