Pourquoi .val () est toujours vide (JQuery)?

J’ai un problème avec une entrée.

voici mon code html / php:

$dotation = ($ig["dotation"]) ? $ig["dotation"]: ''; $bo .= ' ' . $dotation . ' Modifier 

voici mon code js:

  var dot_cha = $(this).parent().find('.dot').val(); 

Ma question est, pourquoi var dot_cha est toujours vide?! Quand j’utilise .html au lieu de .val, j’ai le droit, où est mon erreur?

Merci.

.val () récupère l’atsortingbut value d’un élément input. “.dot” est un td et n’a pas d’atsortingbut value.

Que voulez-vous que dot_cha soit exactement? Si c’est l’entrée que vous recherchez, cela fonctionnerait.

 $(this).parent().find('.datepickerIG').val(); 

Si c’est le texte du td, .html () ou .text () vous donnera ceci.

val récupère la valeur de l’ input et des autres balises ayant cet atsortingbut. Dans votre cas, .dot est la classe d’une ligne de table qui n’a pas de value atsortingbut … Vous devez donc utiliser .text() ou .html() .

Je dirais que le problème est qu’un

n’a pas de valeur, il contient du HTML.

Ce serait pourquoi .html fonctionne et .val ne fonctionne pas.

Vous utilisez .val sur les entrées qui ont des valeurs, mais

n’est pas une entrée, il s’agit simplement d’une balise HTML.

val() doit être utilisé avec des éléments de formulaire (tels que input , textarea etc.) et non avec des éléments.

Vous devez obtenir le innerText ou innerText de l’élément.

Quelque chose comme:

 var dot_cha = $(this).parent().find('.dot').text(); 

Bien que vous ayez besoin de vous assurer que vous avez un élément – comme vous pouvez obtenir une collection d’éléments.

De la docs :

La méthode .val () est principalement utilisée pour obtenir les valeurs des éléments de formulaire tels que input, select et textarea. Dans le cas d’éléments, la méthode .val () renvoie un tableau contenant chaque option sélectionnée. si aucune option n’est sélectionnée, la valeur renvoyée est null.

Dans la documentation de l’API jQuery :

La méthode .val () est principalement utilisée pour obtenir les valeurs des éléments de formulaire tels que input , select et textarea .

val est utilisé sur les éléments de formulaire. Comme .dot est un élément td (qui n’est pas un élément de formulaire), utiliser val ne fonctionnera pas. Pour obtenir le contenu de tout élément autre qu’un élément de formulaire, utilisez .html ou .text

Le doc ici dit

La méthode .val () est principalement utilisée pour obtenir les valeurs des éléments de formulaire tels que input, select et textarea.

Vous avez raison. Html fonctionne car dans votre cas, vous avez un td, et vous devriez utiliser

 $(".dot").html() 

J’espère que ça aide