I am sending values on modal using data-*. The data are populated by a MySQL query.
Here's the button for edit code which is under the while loop:
<div class="btn-group">
<a class="btn btn-primary" href="#">Action</a>
<a class="btn btn-primary dropdown-toggle" data-toggle="dropdown" href="#">
<span class="fa fa-caret-down"></span></a>
<ul class="dropdown-menu">
<?php
$li = "<li><a class=\"open-EditRow\" data-invno=\"".$invno."\" data-date=\"".$date."\" data-shipment=\"".$shipment."\" data-bcrp=\"".$bcrp."\" data-adjbcrp=\"".$adjbcrp."\" data-begbal=\"".$begbal."\" data-adjrpbc=\"".$adjrpbc."\" data-transrpbc=\"".$transrpbc."\" data-promo=\"".$promo."\" data-damages=\"".$damages."\"";
foreach($i as $k)
{
$li.=" data-".strtolower($k)."=\"".$b[$k]."\"";
}
$li.=" title=\"Edit this row\"><i class=\"fa fa-pencil\"></i> Edit</a></li>";
echo $li;
?>
</ul>
</div>
echo htmlentities($li) returns:
<li><a class="open-EditRow" data-invno="2" data-date="2015-04-02" data-shipment="23" data-bcrp="41" data-adjbcrp="0" data-begbal="1500" data-adjrpbc="3" data-transrpbc="46" data-promo="3" data-damages="6" data-cebu="100" data-danao="200" data-talisay="0" title="Edit this row"><i class="fa fa-pencil"></i> Edit</a></li>
which is correct.
The data inside the array $i are from a MySQL query, and these are its data:
- Cebu
- Danao
- Talisay
Here are the edit modal code:
<?php
foreach($i as $j)
{
?>
<div class="form-group">
<label class="col-sm-3 control-label"><?php echo $j; ?></label>
<div class="col-sm-5">
<input type="text" class="form-control" name="<?php echo $j; ?>" id="<?php echo $j;?>"/>
</div>
</div>
<?php
}
?>
And here's its jquery code:
$('.open-EditRow').click(function(){
var invno = $(this).attr('data-invno');
var date = $(this).attr('data-date');
var shipment = $(this).attr('data-shipment');
var bcrp = $(this).attr('data-bcrp');
var adjbcrp = $(this).attr('data-adjbcrp');
var begbal = $(this).attr('data-begbal');
var adjrpbc = $(this).attr('data-adjrpbc');
var transrpbc = $(this).attr('data-transrpbc');
var promo = $(this).attr('data-promo');
var damages = $(this).attr('data-damages');
var centers = <?php echo json_encode($i); ?>;
$('#myModal #invno').val(invno);
$('#myModal #date').val(date);
$('#myModal #shipment').val(shipment);
$('#myModal #bcrp').val(bcrp);
$('#myModal #adjbcrp').val(adjbcrp);
$('#myModal #begbal').val(begbal);
$('#myModal #adjrpbc').val(adjrpbc);
$('#myModal #transrpbc').val(transrpbc);
$('#myModal #promo').val(promo);
$('#myModal #damages').val(damages);
centers.forEach(function(entry) {
var center1 = entry.toLowerCase();
var center2 = 'data-' + center1;
var center = $(this).attr('data-' + center1);
$('#myModal #' + center1).val(center);
alert(center);
});
$('#myModal').modal('show');
});
I am looping everything since its a dynamic value, but alerting var center returns undefined, var center1 and var center2 returns the correct data. I think something's wrong with my jquery code since it doesn't return the correct data on the edit modal.
$(this).attr(...is not referencing an element. I am not good at JQuery but trycenters.forEach((function(entry) { var center = $(this).attr('data-' + entry.toLowerCase()); }).bind(this));undefined.bind()method.