forked from adriancooney/voyeur.js
-
Notifications
You must be signed in to change notification settings - Fork 72
Open
Description
Hi.
I will try explain my problem, but please, forgive my terrible english.
First case
- I have a table with 1 example line
- When I click in some button I remove this line and then add a new one with the form data
- After add a couple of lines I click in save button, send a POST and persist this data in the database
- Everything works great
Second case (error)
- Now I have some data in database, so I create the table without the example line and list all data from database in that table
- When I click in the button for add a new data from the from the textContent not works: all the td is blank (but the input hidden in each td works great)
What I test?
I put some console.log/debug
in my code and I notice when I get the tablet
element, I get undefined instead of HTML object
lib.
My code
HTML
<!-- LINK TO ADD NEW ITEMS FROM FORM -->
<div class="field">
<a href="#" class="ui green button add-dynamic-table" data-table="#customer-team-table" data-field-form="customer_team" data-field-name="customerteam" data-message="#team-message">{!! trans('messages.btn.add') !!}</a>
</div>
<!-- THE TABLE -->
<table class='ui table' id="customer-team-table">
<thead>
<tr>
<th>{!! trans('messages.field.id') !!}</th>
<th>{!! trans('messages.field.position_id') !!}</th>
<th>{!! trans('messages.field.name') !!}</th>
<th>{!! trans('messages.field.work_phone') !!}</th>
<th>{!! trans('messages.field.mobile_phone') !!}</th>
<th>{!! trans('messages.field.email') !!}</th>
<th class='actions'>{!! trans('messages.field.actions') !!}</th>
</tr>
</thead>
<tbody>
@if (!empty($customer) and ($customer->customerTeam->count() > 0))
@foreach ($customer->customerTeam as $team)
<tr>
<td>{!! $team->id !!}</td>
<td>{!! $team->position->name !!}</td>
<td>{!! $team->name !!}</td>
<td>{!! $team->work_phone !!}</td>
<td>{!! $team->mobile_phone !!}</td>
<td>{!! $team->email !!}</td>
<td class='actions'>
<a class="ui icon mini button red destroy-modal" data-destroy-route='{!! URL::route("customerteams.destroy", $team->id) !!}'>
<i class="trash icon"></i>
</a>
</td>
</tr>
@endforeach
@else
<tr>
<td colspan="7">{!! trans('messages.text.empty_table') !!}</td>
</tr>
@endif
</tbody>
</table>
Javascript
$('.add-dynamic-table').click(function(event) {
event.preventDefault();
var name = undefined;
var input_form = $(this).data('field-form');
var input_name = $(this).data('field-name');
var fields = HTML.query('.fields [name^="' + input_form + '"]');
var table = HTML.query($(this).data('table'));
// remove the example line when table is empty
if ($($(this).data('table') + ' tbody tr td[colspan="7"]').length == 1) {
$($(this).data('table') + ' tbody tr').remove();
}
// create a new TR
var tr = table.query('tbody').add('tr');
// create a new TD inside this TR with just a "-" (not work)
tr.add('td').textContent = '-';
var id = $($(this).data('table')).find('tbody tr').length + 1;
fields.each(function(field) {
var $name = field.each('name').toString();
$name = $name.match(/\[(.*?)\]/)[1];
// create a new TD inside this TR
var td = tr.add('td');
// set the textContent based on tagName (not work)
if ($(field).prop('tagName') == 'SELECT') {
td.textContent = $(field).find('option:selected').text();
} else if ($(field).prop('tagName') == 'INPUT') {
td.textContent = field.each('value');
}
// add an input hidden inside this TD (works)
var input = td.add('input[type="hidden"]');
input.each('name', input_name + '[' + id + ']' + '[' + $name + ']');
input.each('value', field.each('value'));
});
// add TD in this TR with a trash link button
var td = tr.add('td.actions');
var a = td.add('a.ui.icon.mini.button.red.destroy-modal');
a.add('i.icon.trash');
});
If you need more informations, tell me please.
Metadata
Metadata
Assignees
Labels
No labels