Add Input Fields Dynamically But Fields Are Generated By External PHP Functions
This question might seem like a repeat, but I really couldn't find something similar. Things work here but are not dynamic here: var counter = 0; function addInput(divName){
Solution 1:
Your function addmore() isn't returning anything because
- There is no
return "value"
in your function - You're making an asynchronous call with $jd.ajax()
You should do like this :
var counter = 0;
function addInput(divName){
addmore(divName);
}
and :
function addmore(divName){
$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) {
var newdiv = document.createElement('div');
newdiv.innerHTML = "Member " + (counter + 1) + res;
document.getElementById(divName).appendChild(newdiv);
counter++;
},
error: function() {
alert('error');
}
});
}
Solution 2:
If you want to return values from an ajax call . set async to false and use responseText to return value from the ajax call. Then return that variable from addmore function.
Solution 3:
try this to add/remove input fields dynamically (using jquery):
<script>$(function() {
var scntDiv = $('#p_scents');
var i = $('#p_scents p').size() + 1;
$('#addScnt').live('click', function() {
$('<p><label for="p_scnts"><input type="text" id="p_scnt" size="20" name="p_scnt_' + i +'" value="" placeholder="Input Value" /></label> <a href="#" id="remScnt">Remove</a></p>').appendTo(scntDiv);
i++;
return false;
});
$('#remScnt').live('click', function() {
if( i > 2 ) {
$(this).parents('p').remove();
i--;
}
return false;
});
});</script>
<style>
* { font-family:Arial; }
h2 { padding:0 0 5px 5px; }
h2 a { color: #224f99; }
a { color:#999; text-decoration: none; }
a:hover { color:#802727; }
p { padding:0 0 5px 0; }
input { padding:5px; border:1px solid #999; border-radius:4px; -moz-border-radius:4px; -web-kit-border-radius:4px; -khtml-border-radius:4px; }
</style>
<div id="ContentWrapper">
<h2><a href="#" id="addScnt">Add Another Input Box</a></h2>
<form id="cat" method="POST" action="">
<div id="p_scents">
<p>
<label for="p_scnts"><input type="text" id="p_scnt" size="20" name="p_scnt" value="" placeholder="Input Value" /></label>
</p>
</div>
Post name of new fields will be: p_scnt_1, p_scnt_2 etc...
Post a Comment for "Add Input Fields Dynamically But Fields Are Generated By External PHP Functions"