我一直在使用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>
然后用新元素替换。
答案 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。