我正在尝试实现这个选择的经典功能:元素依赖于另一个选择:使用提升的选择,例如选择国家并获取所选国家的可能状态。
我面临的问题是,我在 select 元素的 onchange 中的“this.myForm.submit()”没有触发 ajax 请求。如果我使用输入类型“提交”,它会完美运行。
这种行为与 Lift 框架有关吗?有没有更好的方法来使用 Lift 库来实现这种功能?
相关的截断代码:
"name=distributionPoints" #> SHtml.select(distributionPoints, Empty, selectedDistributionPoint = _, "id" -> "the_distributionPoints") &
"name=devices" #> (SHtml.select(devices, Empty, selectedDevice = _, "id" -> "the_devices") ++ SHtml.hidden(process))
视图html:
<form class="lift:form.ajax">
<select name="distributionPoints" id="the_distributionPoints" onchange="submit()">
<option></option>
</select>
<br/>
Device:
<select name="devices" id="the_devices">
<option></option>
</select>
</form>
呈现的 HTML:
<form id="F391649920812YBACEZ" action="javascript://" onsubmit="liftAjax.lift_ajaxHandler(jQuery('#'+"F391649920812YBACEZ").serialize(), null, null, "javascript");return false;">
<div>
Punto de distribución:
<select onchange="submit()" id="the_distributionPoints" name="F630704816482OLP514"></select>
<br />
Equipo:
<select name="F391649920817BLRJW5" id="the_devices"></select><input type="hidden" name="F391649920818HPS35E" value="true" />
<br />
</div>
</form>
[编辑]
我终于得到了解决方案。就像克里斯提到的那样,我使用 ajaxSelect 而不仅仅是选择,而不是使用 setHtml 有一个名为 JsCmds.ReplaceOptions 的方法,它完全符合我的要求。