2015-07-15 1 views
1

J'ai une fonction php appelée getDay qui renvoie le jour de la semaine. Cette fonction est la suivante:Récupération des en-têtes de table à partir de la fonction PHP à l'aide de jQuery

function getDay($value){ 
     $start_date = date("w"); 
     $is_now = time(); 
     $number_of_secs_since_sunday = 86400 * $start_date; 
     $result = $is_now - $number_of_secs_since_sunday + (86400 * $value); 
     $day = date('Y-m-d', $result); 
     return $day; 
    } 

qui est ensuite placé dans la boucle PHP suivante:

for($i = 0; $i < 7; $i++){ 
    echo "<th id='table-header-".$i."'>".getDay($i)."</th>"; 
} 

Cela renverra les jours en cours de la semaine, toujours à partir du dimanche.

Maintenant dans mes <td> réels j'ai un formulaire par <td> où l'utilisateur peut soumettre des données. Ce qui suit est ce que j'ai actuellement:

Screenshot of what the frontend currently looks like

Je voudrais utiliser jQuery (car il semble que le plus simple chemin) pour retourner l'en-tête de table (aka cette date spécifique) par champ de texte, de sorte que lorsque Je soumets le texte dans un champ de texte (c'est-à-dire, aller à post.php) la date dans le <th> sera passée.

Par exemple, si vous êtes dans la ligne Nombre total d'emplois et la colonne 12/07/2015 et entrez des données dans ce champ de texte, lorsque vous soumettez le formulaire, la date de 2015-07 -12 sera publié dans une base de données MySQL. Pas d'inquiétude à propos de la partie MySQL ici, juste obtenir l'en-tête correct de la table à passer à chaque champ de texte (quand ce formulaire particulier est soumis).

C'est ce que j'ai actuellement pour le jQuery, mais il retourne toujours le premier jour de la semaine (dans ce cas, 12/07/2015):

$('.table').on('click', '.btn-submit', function() { 
    var th = $('.table th').eq($(this).index()); 
    alert(th.text());  
}); 

Toute aide à ce sujet est très apprécié , car je pense que je rends cela plus difficile que ça doit être.

+0

Ce serait bien si vous pouviez mettre un peu de HTML? Qu'est-ce que l'élément '.table'. – Varun

Répondre

1

$(this).index() fait référence à l'index du bouton .btn-submit mais vous avez besoin de l'index du td, donc $(this).closest('td').index() devrait le faire.

$('.table').on('click', '.btn-submit', function() { 
    var th = $('.table th').eq($(this).closest('td').index()); 
    alert(th.text());  
}); 
0

Vous trouvez index du bouton, alors que vous en avez besoin pour la <td>. Aussi, je suppose que le bouton et la zone de texte sont dans le même <td>, car l'image n'est pas très claire.

Donc, essayez ceci,

$('.table').on('click', '.btn-submit', function() { 
    var th = $('.table th').eq($(this).parent().index()); 
    alert(th.text());  
});