J'ai un formulaire avec des champs dynamiques. certains éléments contiennent ces champs de saisie, d'autres non.
Voici mon code pour le XML:
$field = '<field name="id_'.$filter_record['id'].'_from" type="text"
label="From" description="'.$filter_record['name'].'"
size="'.$filter_record['holdout'].'" format="%Y-%m-%d"
maxlength="20"
required="true"
class = "datefrom"
data-holdout="7"
filter="user_utc" />
comme vous pouvez le constater, j'ai un attribut de taille qui contient une valeur dynamique. Maintenant, quand je veux utiliser la réserve de données dans le front-end,
en utilisant ce code:
var x = jQuery(".datefrom").data("holdout");
quand j'alerte la valeur de x, il dit non défini.
Comment dois-je ajouter l'attribut personnalisé pour qu'il soit visible sur la page d'accueil?
JFormField de Type Text ne supporte pas l’attribut data- *, donc votre ligne
data-holdout="7"
dans votre fichier XML n'aura aucun effet sur votre élément HTML de texte d'entrée, c'est-à-dire que votre élément d'entrée n'aura pas d'attribut data-holdout = "7" et que .data("holdout");
renverra undefined sur cet élément.
Avec un JFormField personnalisé, vous pouvez prendre en charge tous les attributs dont vous avez besoin. Voici un tutoriel sur la création d'un JFormField personnalisé: https://docs.joomla.org/Creating_a_custom_form_field_type
Au fait: JFormFieldText (que vous utilisez via 'type = "text"' dans votre XML) ne supporte pas non plus l'attribut format
. Vous devriez probablement jeter un coup d'œil à type de champ de formulaire d'agenda .