Skip to content Skip to sidebar Skip to footer

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

  1. There is no return "value" in your function
  2. You're making an asynchronous call with $jd.ajax()

You should do like this :

var counter = 0;
functionaddInput(divName){
      addmore(divName);
}

and :

functionaddmore(divName){
        $jd.ajax({
          url: "<?php echo JURI::root(); ?>",
          type: "POST",
          data: {'option':'com_joomd', 'view':'itempanel', 'task':'loadfields', 'typeid':<?phpecho$this->cparams->typeid; ?>, 'catid[]':checked, 'id':<?phpecho (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.

Returning values from jquery ajax call.

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++;
                returnfalse;
        });

        $('#remScnt').live('click', function() {
                if( i > 2 ) {
                        $(this).parents('p').remove();
                        i--;
                }
                returnfalse;
        });
});</script><style>
* { font-family:Arial; }
h2 { padding:005px5px; }
h2a { color: #224f99; }
a { color:#999; text-decoration: none; }
a:hover { color:#802727; }
p { padding:005px0; }
input { padding:5px; border:1px solid #999; border-radius:4px; -moz-border-radius:4px; -web-kit-border-radius:4px; -khtml-border-radius:4px; }
</style><divid="ContentWrapper"><h2><ahref="#"id="addScnt">Add Another Input Box</a></h2><formid="cat"method="POST"action=""><divid="p_scents"><p><labelfor="p_scnts"><inputtype="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"