Chained或Dependent选择Zend_Form jQuery以删除或替换表单元素

Chained or Dependent Select Zend_Form jQuery to remove or replace the form elements?

本文关键字:删除 替换 表单 元素 jQuery Form Dependent 选择 Zend Chained      更新时间:2023-11-15

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

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

所以我添加了一个新的选择:

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

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

当第一个选择的值再次更改时,问题就出现了。然后在表单中添加一个新的Select。理想情况下,我希望删除旧的satellite element,即标签和Select。

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

然后用新元素替换。

从您的AJAX成功中尝试这个:

$("#satellite-label").remove();
$("#satellite").parent().remove();

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

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

试试这个。。。

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

您可以使用隐藏输入(Zend_Form_Element_Hidden),然后简单地替换隐藏元素。

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

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

通过这种方式,您还可以向这个隐藏元素添加后端验证器,以使用isValid方法。

在第一个select的值再次更改时,必须先删除上一个插入的select,然后再插入另一个。

所以这可能对你的情况有所帮助。

$("#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,然后添加标签,并在插入新select之前插入新select。