Problème actualisation tableau à l'aide d'un <select>
Résolu
Pépito
-
jordane45 Messages postés 40050 Statut Modérateur -
jordane45 Messages postés 40050 Statut Modérateur -
Bonjour,
Je rencontre un problème dans la mise à jour d'un tableau en fonction d'un <select>. Je m'explique. Je souhaite en fonction de l'option que je choisis dans mon <select>, mettre à jour mon tableau en fonction de la colonne "current-use".
Je vous donne un exemple, dans mon <select> je dispose pour le moment, pour me servir de test, de 3 options : Event 1, Event 2 et Event 3. Ces 3 options représentent des évènements. Mon tableau me permet de lister tous les messages audios contenus dans ma BDD. Enfin, ma colonne "current-use" représente l'évènement pour lequel le message audio est utilisé.
C'est pourquoi lorsque (imaginons), je choisis Event 1 dans mon <select>, je souhaiterais que seulement les lignes ayant Event 1 dans la colonne, apparaissent, et que toutes les autres lignes disparaissent. De même pour Event 2, Event 3 etc ...
Voici mon code html/twig (sachant que je fais ça sous symfony) :
Voici mon code JS :
J'attends votre aide avec impatience !!!! Merci d'avance
Je rencontre un problème dans la mise à jour d'un tableau en fonction d'un <select>. Je m'explique. Je souhaite en fonction de l'option que je choisis dans mon <select>, mettre à jour mon tableau en fonction de la colonne "current-use".
Je vous donne un exemple, dans mon <select> je dispose pour le moment, pour me servir de test, de 3 options : Event 1, Event 2 et Event 3. Ces 3 options représentent des évènements. Mon tableau me permet de lister tous les messages audios contenus dans ma BDD. Enfin, ma colonne "current-use" représente l'évènement pour lequel le message audio est utilisé.
C'est pourquoi lorsque (imaginons), je choisis Event 1 dans mon <select>, je souhaiterais que seulement les lignes ayant Event 1 dans la colonne, apparaissent, et que toutes les autres lignes disparaissent. De même pour Event 2, Event 3 etc ...
Voici mon code html/twig (sachant que je fais ça sous symfony) :
<form method="POST" id="form_filter" action="{{ path('oe_audio_audio_library_list') }}">
<div class="col-md-3">
<div class="form-group">
<div class="input-group">
<span class="input-group-addon"><i class="fa fa-bullhorn"></i></span>
{{ form_widget(form.salon, { 'attr' : {'class' : 'event_class'}}) }}
</div>
</div>
</div>
</form>
<table id="table-audio-library" class="table table-hover table-condensed">
<thead>
<tr>
<th>{{ 'name' | trans }}</th>
<th>{{ 'languages' | trans }}</th>
<th>{{ 'duration' | trans }}</th>
<th>{{ 'author' | trans }}</th>
<th>{{ 'createdAt' | trans }}</th>
<th>{{ 'publicFile' | trans }}</th>
<th>{{ 'currrentUse' | trans | capitalize }}</th>
<th class="th-actions">{{ 'actions' | trans }}</th>
{#<th style="display:none;">{{ 'id' }}</th>#}
</tr>
</thead>
<tbody>
{% for audioLibrary in audioLibraries %}
<tr id="myTableRow" data-audio-id="{{ audioLibrary.id }}" data-audio-name="{{ audioLibrary.name }}">
<td>{{ audioLibrary.name }}</td>
<td>{{ macro.display_label_languages(audioLibrary.languages) }}</td>
<td>{% if audioLibrary.length %}<span class="label label-default"><i class="fa fa-clock-o"></i> {{ audioLibrary.length | date('H:i:s') }}</span>{% endif %}</td>
<td>{{ audioLibrary.author }}</td>
<td>{{ audioLibrary.createdAt | date('d-m-Y') }}</td>
<td>
{% if audioLibrary.isPublic %}
<i class="fa fa-check text-success"></i>
{% else %}
<i class="fa fa-remove text-danger"></i>
{% endif %}
</td>
<td class="cell-current-use">
{% for event in audioLibrary.events %}
{% if event.postendAt|date('U') > 'now'|date('U') %}
<span class="label label-default">{{ event.name }}</span><br>
{% else %}
<span style="display:none;">{{ event.name }}</span><br>
{% endif %}
{% endfor %}
</td>
<td>
{{ macro.btn_action('edit', 'oe_audio_audio_library_edit', {'audio_library_id': audioLibrary.id, 'audio_library_slug': audioLibrary.slug}) }}
{% if hasUserAccessToRoute(app.user, 'oe_audio_audio_library_assign_events') %}
<span class="btn btn-default btn-xs btn-flat show-form-assign-events" data-original-title="{{ 'relatedEvents' | trans | capitalize }}"><i class="fa fa-link fa-rotate-135"></i></span>
{% endif %}
{{ macro.btn_play_audio_library(audioLibrary.name, audioLibrary.path) }}
{{ macro.btn_action('remove', 'oe_audio_audio_library_remove', {'audio_library_id': audioLibrary.id, 'audio_library_slug': audioLibrary.slug}) }}
</td>
{#{% for event in audioLibrary.events %}
<td style="display:none;">{{ event.id }}</td>
{% endfor %}#}
</tr>
{% endfor %}
</tbody>
</table>
Voici mon code JS :
<script type="text/javascript">
// Requête pour gérer dynamiquement le tableau en fonction du Select
$( ".event_class" ).change(function(){
var input_data = $('#search-table').val(), // valeur input text recherche
select_data = $('.event_class option:selected').text(), // valeur option select
//concat = input_data+select_data; // concaténation valeurs input + select
cellules = [];
cells_cont = 0;
cells = $(".cell-current-use").each(function(){
cellules[cells_cont] = $(this).text(); // recup valeur <td> colonne current_use
cells_cont++;
});
var cell_data = cells.attr('class','cell-current-use').find('span').text(); // valeur cellule <td>
console.log(cell_data);
//console.log(cells);
if ( select_data == cell_data ){
alert('Ok !');
}
});
</script>
J'attends votre aide avec impatience !!!! Merci d'avance
A voir également:
- Problème actualisation tableau à l'aide d'un <select>
- Tableau word - Guide
- Trier un tableau excel - Guide
- Tableau ascii - Guide
- Imprimer un tableau excel - Guide
- Tableau croisé dynamique - Guide
1 réponse
Bonjour,
Un truc du genre :
Un truc du genre :
<!DOCTYPE html>
<html>
<HEAD>
<script type="text/javascript" src="https://code.jquery.com/jquery-1.12.4.min.js"></script>
</HEAD>
<BODY>
<select id='choixevent'>
<option value='event1'>event1</option>
<option value='event2'>event2</option>
<option value='event3'>event3</option>
</option>
</select>
<table id="table-audio-library" class="table table-hover table-condensed">
<thead>
<tr>
<th>{{ 'name' | trans }}</th>
<th>{{ 'languages' | trans }}</th>
<th>{{ 'duration' | trans }}</th>
<th>{{ 'author' | trans }}</th>
<th>{{ 'createdAt' | trans }}</th>
<th>{{ 'publicFile' | trans }}</th>
<th>{{ 'currrentUse' | trans | capitalize }}</th>
<th class="th-actions">{{ 'actions' | trans }}</th>
{#<th style="display:none;">{{ 'id' }}</th>#}
</tr>
</thead>
<tbody>
<tr>
<td></td><td></td><td></td><td></td><td></td><td></td><td></td><td class='cell-current-use'><span>event1</span></td><td>1</td>
</tr>
<tr>
<td></td><td></td><td></td><td></td><td></td><td></td><td></td><td class='cell-current-use'><span>event1</span></td><td>2</td>
</tr>
<tr>
<td></td><td></td><td></td><td></td><td></td><td></td><td></td><td class='cell-current-use'><span>event2</span></td><td>3</td>
</tr>
<tr>
<td></td><td></td><td></td><td></td><td></td><td></td><td></td><td class='cell-current-use'><span>event2</span></td><td>4</td>
</tr>
<tr>
<td></td><td></td><td></td><td></td><td></td><td></td><td></td><td class='cell-current-use'><span>event2</span></td><td>5</td>
</tr>
<tr>
<td></td><td></td><td></td><td></td><td></td><td></td><td></td><td class='cell-current-use'><span>event3</span></td><td>6</td>
</tr>
</tbody>
</table>
<script type="text/javascript">
$("#choixevent").change(function(){
var event = $(this).val();
//on masque toutes les lignes du tableau
$("td.cell-current-use").parent().css('display','none');
//on affiche que celles dont le span contenu dans une td ayant comme style curen-use a le text équivalent à l'event selectionné
$("td.cell-current-use span:contains('"+event+"')" ).parent().parent().css('display','block');;
});
</script>
</body>
</html>
Merci de ne pas oublier de clôturer le sujet
(en cliquant sur le lien "Marquer comme résolu" qui se trouve sous le titre de la question)
Cordialement,
Jordane