この種の操作ケースを行う最善の方法は何ですか:
コンボボックスを使ったトリガーがchangeの時、以前にフォームに追加した textField の型を変更したい。
私のサンプルデータコレクション:
function DataProvide(){
selectValues = {
"choose" : "-Choose-",
"id" : "ID",
"emp_name" : "Employee Name",
"photo_path" : "Photo Path",
"emp_id" : "Employee ID",
"start_date" : "Start Date",
"birth_date" : "Birth Date"
};
$.each(selectValues, function(key, value) {
$('#data1_1')
.append($("<option></option>")
.attr("value",key)
.text(value));
});
}
$(document).ready(function() {
DataProvide();
});
コンボボックスにデータが表示されました。
次に、 $.append()を使用してフォームにフィールドを追加します。
var count = 1;
$(".addCF").click(function(){
count += 1;
var $row = $('<tr>'
+ '<td>' + '</td>'
+ '<td>' + '<input id="data2_' + count + '" type="text" name="data2[]" class="data2" value="" placeholder=""/>' + '</td>'
+ '<td>' + '<input id="data3_' + count + '" type="text" name="data3[]" class="data3" value="" placeholder=""/>' + '</td>'
+ '<td>' + '<a href="javascript:void(0);" class="remCF">Remove</a>' + '</td>'
+ '</tr>').appendTo("#customFields");
$row.find('td:first').append($('#data1_1').clone())
});
$("#customFields").on('click','.remCF',function(){
$(this).parent().parent().remove();
count -= 1;
});
この時点まで、私は望み通りの成功を収めてきました。
しかし、3列目に少し変更を加えたいと思います。たとえば「 start_date 」を選択したトリガー(コンボボックス)でこのフォームを操作する最良の方法は、jQuery UIを追加して日付オプションを表示するクラス「 onlyDate 」を使用するようにフィールドを変更することです。
追加した :
$(".onlyDate").datepicker({
dateFormat: "dd-mm-yy"
});
次に、コンボ $("#customFields").on('change', '.tabelBaru', function() {
if(nilai=='gender'){
$this.closest("tr").find(".data3").replaceWith(
'<select name="data3[]" class="data3">'
+ '<option value="man" selected >Man</option>'
+ '<option value="woman">Woman</option>'
+ '</select>'
)
}else if(nilai=='start_date'){
$this.closest("tr").find(".data3").replaceWith(
'<input type="text" name="data3[]" value="" class="onlyDate"/>'
)
}
};
しかし、jQueryUI の datepickerは通常どおり表示されません。しかし、通常の形式 ($.append を使用しない) の場合、すべて正常に実行されます。
どうすれば修正できますか?