【发布时间】:2012-02-04 15:48:18
【问题描述】:
我有一个可以克隆的动态表单,使用SheepIt! 插件克隆我的表单元素。我的表单有一组动态的下拉框,其中第二个下拉框根据第一个下拉框的选择显示一组值。
我的问题是下拉框的动态功能在克隆的下拉列表中不起作用,并且仅适用于页面上的第一个下拉列表。
任何想法为什么会发生这种情况?
我创建了一个小提琴,以便您可以看到 SheepIt!插件有效,http://jsfiddle.net/DeJch/1/,但添加/删除功能无法正常工作。
克隆完成后我是否必须调用 AJAX?
也许像$('#container_add').live('click', function() { */ */ });?
HTML:
<div>
<label>Item:</label>
<select class="item" name="item" id="item">
<option value="">Select</option>
...
</select>
</div>
<div>
<label class="label>Options:</label>
<select class="options" name="options" id="options">
...
/select>
</div>
Javascript:
$(document).ready(function(){
var sheepItForm = $('#clone').sheepIt({
separator: '',
allowRemoveLast: true,
allowRemoveCurrent: true,
allowAdd: true,
maxFormsCount: 3,
minFormsCount: 1,
iniFormsCount: 1
});
$(".item").change(function () {
var group_id = $(this).val();
var self = $(this); // Added line
var $children = $(this).parent().next().children('select.options')
$.ajax({
type: "POST",
url: "../../db/groups.php?id=" + group_id,
dataType: "json",
success: function(data){
$children.empty()
$children.append('<option value="">Select</option>');
$.each(data, function(i, val){
$children.append('<option value="' + val.group_id + '">' + val.name + '</option>');
});
$children.focus();
},
beforeSend: function(){
$children.empty();
$children.append('<option value="">Loading...</option>');
},
error: function(){
$children.attr('disabled', true);
$children.empty();
$children.append('<option value="">No Options</option>');
}
})
});
})
【问题讨论】: