J'ai un formulaire avec un grand nombre de cases à cocher et de zones de texte. Lorsqu'une case est cochée, la zone de texte associée apparaît. Tout cela fonctionne bien.
Cependant, j'ai un appel à une base de données qui reçoit des informations pour remplir les zones de texte avec des données si une certaine requête est faite. Un exemple du HTML est le suivant :
<li>
<input type="checkbox" id="changes-trigger" />
<label for="changes-trigger">Changes</label>
<textarea id="changes" name="changes" rows="6" cols="40"><?php echo $report['changes']; ?></textarea>
</li>
Si des données sont chargées dans le champ de texte, je veux que la case à cocher soit cochée et que le champ de texte soit affiché. Si je cible spécifiquement la zone de texte à l'aide de l'attribut id
je peux faire ce que je veux au moment du chargement de la page :
if($('#changes').val()) {
$('#changes-trigger').prop('checked','true');
$('#changes').show();
}
Cependant, comme je l'ai dit, j'en ai beaucoup et je ne veux pas coder pour chacun d'entre eux. Non seulement cela ne fait pas ce que je souhaite, mais cela casse le reste de mon fichier .js externe. Quelqu'un peut-il m'expliquer pourquoi la méthode suivante ne fonctionne pas ?
if($('textarea').val()) {
$(this).siblings('input').prop('checked','true');
$(this).show();
}