私はフォーム要素を複製するためにSheepIt!プラグインを使用して、クローン化できる動的フォームを持っています。私のフォームには、最初のドロップダウンボックスからの選択に基づいて2番目のドロップダウンボックスに値のセットが表示される、ドロップダウンボックスの動的セットがあります。jQueryを使用してフォーム要素をクローンした後にAJAX関数を呼び出す方法は?
私の問題は、ドロップダウンボックスの動的機能がクローンドドロップダウンで機能せず、ページ上の最初のドロップダウンでのみ機能することです。
これは何が起こっているのですか?
私はあなたがどのように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>');
}
})
});
})
Seanに感謝します。しかし、AJAXを実際にどのように呼び出すのですか? – Michael
'on'メソッドを使って' change'イベントを '.item'クラスにバインドし、JQueryが残りのイベントを処理します –