Recup foreach en js

Par pege, il y a 10 ans


Bonjour,

J'ai fais le prochaint est: donc j'ai un tableau et a la fin le tableau a un bouton qui va ouvrir une fenêtre (modal). J'ai donné a ce bouton une data value:

<button data-toggle="modal" id="button_ng" data-value="<?php foreach(get_next_game($team->link_name) as $next_game_info){ echo $next_game_info->id;} ?>" data-target="#<?php foreach(get_next_game($team->link_name) as $next_game_info){ echo $next_game_info->team;} ?>_ng" class="btn btn-primary btn-circle"><i class="fa fa-list"></i></button>

Je précise que ce bouton est dans un tableau foreach. Maintenant, quand je clique sur le bouton. J'aimerais que le data-link s'affiche ou bien ici: l'id. Je fais la prochaine chose:

var id = $('#button_ng').data('value'); $('#button_ng').click(function(){ alert(id); });

Le problème est que pour le premier bouton ca l'affiche bien, mais quand je clique sur les autres, ca ne marche pas...:/

merci d'avance pour votre aide!! ;)

3 réponses

nico41, il y a 10 ans

Bonjour,

ton problème vient du fait que tu cibles ton élément par son id css ( #button_ng ) et que tous tes bouttons ont le même ( ce qui n'est pas correct d'ailleurs car l'id doit être unique à un seul élément de la page )

Ajoute une classe css à ton boutton, par exemple .button_ng

et

$('.button_ng').click(function(e){ e.preventDefault(); var id = $(this).data("value"); alert(id); });
brokleen, il y a 10 ans

Yo, stock le résultat de ton foreeach dans une variable et ajoute le ensuite dans ton data-value.
Car c'est vomitif de voir un foreach inséré dans du code html comme cela.

pege, il y a 10 ans

Ca marche bien mais en faite j'ai un form de ce genre:

<form method="post" class="edit-next-game" data-value="<?php foreach(get_next_game($team->link_name) as $next_game_info){ echo $next_game_info->id;} ?>" > <?php foreach(get_next_game($team->link_name) as $next_game_info): ?> <div class="row"> <div class="col-lg-6"> <label for="date">Date:</label> <input class="form-control" id="date" data-inputmask-clearmaskonlostfocus="false" value="<?php echo date('d-m-Y' ,strtotime($next_game_info->datetime)); ?>" /> </div> <div class="col-lg-6"> <label for="time" >Heure:</label> <input class="form-control" id="time" data-inputmask-clearmaskonlostfocus="false" value="<?php echo date('G\hi' ,strtotime($next_game_info->datetime)); ?>" /> </div> </div> <label for="home" >Domicile:</label> <select class="form-control" id="home"> <option>--club--</option> <?php foreach(get_clubs() as $club): ?> <option value="<?php echo $club->team; ?>" <?php if($club->team == $next_game_info->home){echo "selected";} ?>><?php echo $club->team; ?></option> <?php endforeach; ?> </select> <label for="away" >Extérieur:</label> <select class="form-control" id="away"> <option>--club--</option> <?php foreach(get_clubs() as $club): ?> <option value="<?php echo $club->team; ?>" <?php if($club->team == $next_game_info->away){echo "selected";} ?>><?php echo $club->team; ?></option> <?php endforeach; ?> </select> <div class="row"> <div class="col-lg-6"> <label for="scoreh" >Score visités:</label> <input type="number" min="0" max="250" class="form-control" id="scoreh" /> </div> <div class="col-lg-6"> <label for="scorea" >Score visteurs:</label> <input type="number" min="0" max="250" class="form-control" id="scorea" /> </div> </div> <label for="place" >Lieu:</label> <select class="form-control" id="place_ng"> <option>--sale--</option> <?php foreach(get_places() as $place): ?> <option value="<?php echo $place->hall; ?>" <?php if($place->hall == stripslashes($next_game_info->place)){echo "selected";} ?>><?php echo $place->hall; ?></option> <?php endforeach; ?> </select> <br> <button class="btn btn-primary" type="submit" class="submit">Enregistrer</button> <?php endforeach; ?> </form>

et le problème est que je ne sais pas récuperer les autres champs en faisant:

$(document).ready(function(){ $('.edit-next-game').submit(function(e){ e.preventDefault(); var id = $(this).data("value"); var date = $("#date").val(); var time = $("#time").val(); alert(id); }); }); ...

Merci d'avance!!