あなたのフィドル、しかしそれはうまくいく:ここをクリック
jsに問題がありました-変更:
$(".clone_dept").live("change", function() { //<-- not really sure why live isn't working
if ($(this).val() == 'Dept #1') {$(".clone_attendees").val(dept_1);}
if ($(this).val() == 'Dept #2') {$(".clone_attendees").val(dept_1);}
if ($(this).val() == 'Dept #3') {$(".clone_attendees").val(dept_1);}
if ($(this).val() == 'Dept #4') {$(".clone_attendees").val(dept_1);}
if ($(this).val() == 'Dept #5') {$(".clone_attendees").val(dept_1);}
}).change(); // trigger once if needed
}); // <-- This shouldnt be here
に:
$(".clone_dept").change(function() {
if ($(this).val() == 'Dept #1') {$(".clone_attendees").val(dept_1);}
if ($(this).val() == 'Dept #2') {$(".clone_attendees").val(dept_2);}
if ($(this).val() == 'Dept #3') {$(".clone_attendees").val(dept_3);}
if ($(this).val() == 'Dept #4') {$(".clone_attendees").val(dept_4);}
if ($(this).val() == 'Dept #5') {$(".clone_attendees").val(dept_5);}
}).change(); // trigger once if needed
これは実際には最も近い入力を選択する方法を扱っていませんが。あなたのフィドルの場合、それはそのクラスを使用している唯一の要素です。この行構造をコピーして再利用する場合は、これを使用して適切な入力を選択します。
if($(this).val() == 'Dept #1') {$(this).parent().next("td").children(".clone_attendees").val(dept_1);}
編集:さらに良いことに、5行のifステートメントではなく、配列を使用して適切な値を割り当てます。
var dept = ["Person #1, Person #2, Person #3, Person #4, Person #5","Person #6, Person #7, Person #8, Person #9, Person #10","Finance Persons","IT Persons","Marketing Persons"];
オプションタグに値を追加する
<option value=0>Dept #1</option>
その後
$(".clone_dept").change(function() {
if($(this).val() == 'Dept #1') {
$(this).parent()
.next("td")
.children(".clone_attendees")
.val(dept[$(this).val()])
}
}).change(); // trigger once if needed