web-dev-qa-db-fra.com

Pug / Jade - l'entrée est un élément à fermeture automatique: <entrée /> mais contient un contenu imbriqué?

Je veux créer le html comme ceci:

<label class="radio-inline">
    <input type="radio" name="hidden" checked="" value="Visible"> Visible
</label>

Carlin/Jade:

label.radio-inline
    input(type="radio", name="hidden", value="0", checked="") Visible

Mais je reçois une erreur:

input est un élément à fermeture automatique: mais contient un contenu imbriqué.

Qu'est-ce que ça veut dire? Comment puis-je résoudre ce problème?

11
laukok

Il existe plusieurs façons de le faire en utilisant Jade/Pug. La première façon consiste à utiliser un caractère de pipe (qui nécessite une nouvelle ligne):

input
  | text

La deuxième façon consiste à utiliser l'interpolation de balises (et vous pouvez rester sur la même ligne):

#[input] text

Une réponse alternative de Jethro serait donc:

label.radio-inline
  #[input(type='radio', name='hidden', value=0, checked='')] Visible

Notez que vous pouvez même faire:

 label #[input] text

Ce qui va générer:

<label>
  <input/> text 
</label>
10
Iso

Vous en aurez besoin comme ceci:

label.radio-inline
  input(type='radio', name='hidden', value=0, checked='')
  | Visible

Mettre Visible sur la même ligne que input, oblige pug à l'interpréter comme le HTML interne de l'élément input.

6
1sloc

Je pense qu'il est absurde de mettre la input à l'intérieur de la balise label, ou non? Tu pourrais juste faire

label(for="ya") Visible
input(id="ya", type="radio", name="hidden", value=0, checked="")

Cela vous donne un bouton radio parfaitement étiqueté conformément aux modernes normes Web .

1
Flaudre