我有一个下拉列表(从对象中填充的值),从中选择的值将进入下一页。但是,如果选择了该值,则该对象的另一个属性应转到下一页。
我当前的代码是:
<select name="ElementName" class="dropdown"
id="ElementsDropDownList">
<isloop iterator="ELEMENTS">
<option value="#ELEMENTS:ElementName#"><isprint
value="#ELEMENTS:ElementLabel#">
</option>
</isloop>
</select>
我想要一些类似的东西:
<select name="ElementName" class="dropdown"
id="ElementsDropDownList">
<isloop iterator="ELEMENTS">
<option value="#ELEMENTS:ElementName#"><isprint
value="#ELEMENTS:ElementLabel#">
</option>
<input type="Hidden" name="extraField" id="extraFieldUUID" value="<isprint
value="#ELEMENTS:ElementValue#">">
</isloop>
</select>
这里循环中的输入字段不起作用。
在select
元素的内部不能有input
元素。它必须是独立的:
<select name="ElementName" class="dropdown" id="ElementsDropDownList">
<isloop iterator="ELEMENTS">
<option value="#ELEMENTS:ElementName#">
<isprint value="#ELEMENTS:ElementLabel#">
</option>
</isloop>
</select>
<input type="Hidden" name="extraField" id="extraFieldUUID" value="<isprint value="#ELEMENTS:ElementValue#">">
然而,很明显,这在您的情况下不起作用,因为这在循环之外。您需要另一个循环,这意味着每个ElementValue
值都将包含在表单中。。。不好。
听起来,您想要实现的是拥有一个具有两个值的select
。它并没有真正做到这一点,几乎是故意的。我现在能想到两种选择:
- 如上所示,在
select
元素外包含一个隐藏的input
,但不要为其设置值。在JavaScript中包含可能值的列表(很可能是某种哈希表,使用ElementName
作为键)。然后将事件处理程序附加到select
元素的change
事件,该事件基于新选择的值设置隐藏的input
值 或,将这两个值作为分隔字符串包含在
select
中,并将它们解析回接收页面上的单独值。也许类似于:
(我完全是在猜测语法,因为我对你使用的模板工具一无所知。)然后,接收页面上的代码会收到一些分隔字符串,比如:
"SomeElement|123"
然后,该代码需要将该字符串解析为它的两个组成值。