web-dev-qa-db-fra.com

L'ajout d'une valeur d'attribut de données au champ XML ne fonctionne pas

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?

1
Break the Law

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 .

2
fruppel