链接还是依赖选择Zend_Form jQuery来删除或替换表单元素?

时间:2013-11-28 07:58:19

标签: javascript jquery zend-framework

我一直在使用Zend Framework 1来创建依赖/链接的Zend_Form。

Zend_Form_element_Select另一个Zend_Form_Element_Select被添加到表单时,其中正确的字段取决于第一个选择的值。

所以我添加了新的选择:

$("#city-label").before(data);

将在城市标签前插入新的选择。

当第一个选择的值再次更改时,会出现问题。然后将新的Select添加到表单中。理想情况下,我会喜欢标签的旧satellite element和要删除的选择。

<dt id="satellite-label">
<label for="satellite" class="optional">Satelite</label>
</dt>
<dd class="ui-select">
<select name="satellite" id="satellite">
    <option value="--Select One--" label="--Select One--">--Select One--</option>
    <option value="5" label="Alex">Alex</option>
    <option value="6" label="Patro">patro</option>
    <option value="7" label="Zozo ">Zozo</option>
</select></dd>
<dt id="city-label"><label for="city" class="optional">City</label></dt>

然后用新元素替换。

5 个答案:

答案 0 :(得分:2)

在您的AJAX 成功

中尝试此操作
$("#satellite-label").remove();
$("#satellite").parent().remove();

答案 1 :(得分:1)

您应该跟踪新元素,以便在值再次更改时将其删除:

var currentLabel;

...

if (currentLabel) {
    currentLabel.remove();
}
currentLabel = $(data);
$("#city-label").before(currentLabel);

答案 2 :(得分:1)

试试这个......

$("#satellite_elem-label").remove();
$("#satellite_elem").parent().remove();;
$("#city-label").before(newElement);

答案 3 :(得分:0)

您可以使用隐藏的输入(Zend_Form_Element_Hidden),然后只需替换隐藏的元素。

$("#target-element").html(data);

不要忘记在target-element的html内容上使用相同的ID(data)。

这样您还可以将后端验证器添加到此隐藏元素以使用isValid方法。

答案 4 :(得分:0)

您必须删除之前插入的选择,然后在第一个选择的值再次更改时再插入另一个。

所以在你的情况下可能会有所帮助。

$("#city-label").prev('.ui-select').remove();
$("#city-label").prev('#satellite-label').remove();
$("#city-label").before(data);

或只是添加此

$("#city-label").prev().remove();
$("#city-label").prev().remove();
$("#city-label").before(data);

它将删除select then then label并在插入新的select之前插入新的select。