0

我有一个下拉列表(从对象填充的值),从中选择的值进入下一页。但是,如果选择了该值,则该对象的另一个属性应转到下一页。

我目前的代码是:

<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>

这里循环内的输入字段不起作用。

4

1 回答 1

0

input元素不能有元素select。它必须是分开的:

<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具有两个值的 a 。它并没有真正做到这一点,几乎是设计使然。目前我能想到两个选择:

  1. input如上所示,在元素外部包含一个 hidden select,但不要为其设置值。在 JavaScript 中包含可能值的列表(作为某种哈希表,很可能,使用ElementName作为键)。然后将事件处理程序附加到select元素的change事件,该事件根据新选择的值设置隐藏input值。
  2. 或者,将两个值都包含在select分隔字符串中,然后将它们解析为接收页面上的单独值。也许是这样的:

(我完全猜测语法,因为我对您正在使用的模板工具一无所知。)然后接收页面上的代码将收到一些分隔字符串,例如:

"SomeElement|123"

然后,该代码需要将该字符串解析为其两个组件值。

于 2015-02-28T23:47:42.223 回答