この質問は繰り返しのように思えるかもしれませんが、私は本当に似たようなものを見つけることができませんでした。ここでは物事は機能しますが、ここでは動的ではありません。
var counter = 0;
function addInput(divName){
var newdiv = document.createElement('div');
newdiv.innerHTML = "Member " + (counter + 1) + " <br><input type='text' name='myInputs[]'>";
document.getElementById(divName).appendChild(newdiv);
counter++;
}
しかし、ここで少しひねりを加えています。
var counter = 0;
function addInput(divName){
var newdiv = document.createElement('div');
newdiv.innerHTML = "Member " + (counter + 1) + addmore();
document.getElementById(divName).appendChild(newdiv);
counter++;
}
したがって、ここでの新しい関数addmore()
は、AJAXを使用して呼び出されている外部PHPコードによって生成されたフィールドを返します。
関数 addmore();
は次のようなものです。
addmore(){
$jd.ajax({
url: "<?php echo JURI::root(); ?>",
type: "POST",
data: {'option':'com_joomd', 'view':'itempanel', 'task':'loadfields', 'typeid':<?php echo $this->cparams->typeid; ?>, 'catid[]':checked, 'id':<?php echo (int)$this->item->id; ?>, "<?php echo jutility::getToken(); ?>":1, 'abase':1},
beforeSend: function() {
$jd(".poploadingbox").show();
},
complete: function() {
$jd(".poploadingbox").hide();
},
success: function(res) {
$jd('#fieldtable_id').html(res);
},
error: function() {
alert('error');
}
});
}
明らかにその部分$jd('#fieldtable_id').html(res);
は実際の仕事をしていますが、ここで新しいフィールドを動的に導入するためにそれを使用することはできません。
案内してください。