2010-12-10 4 views
1

salut J'ai une balise li comme suit:Passer une valeur de balise li à une entrée de texte

<li value="myLi" class="myLi">My element</li> 

J'ai essayé ce code jquery:

$(".myLi").click(function(){ 
    document.getElementById("mytext").value=$(this).value; 
}); 

sachant que mytext est une entrée de type text, comment puis-je passer la valeur de la balise li à l'entrée, si ce n'est pas possible, comment puis-je utiliser innerHTML pour passer le code entre les balises li.

le code que j'ai essayé ne fonctionne pas merci

Répondre

3

Malgré ce que certains ont dit, value est en effet un attribut valide pour li éléments, et cela se reflète dans la propriété value, mais il est nécessaire d'être un entier (reference):

L'attribut de valeur, s'il est présent, doit être un entier valide donnant la valeur ordinale de l'élément de liste.
...
Si l'attribut value est présent, les agents utilisateurs doivent l'analyser comme un entier, afin de déterminer la valeur de l'attribut. Si la valeur de l'attribut ne peut pas être convertie en un nombre, l'attribut doit être traité comme s'il était absent.L'attribut n'a pas de valeur par défaut.

Si votre code collé était juste une édition rapide et vous vraiment utiliser un entier, votre code ne fonctionnera que si vous ne l'avez pas wrap this dans une instance jQuery:

HTML:

<li value="3" class="myLi">My element</li> 

en utilisant JavaScript jQuery:

$(".myLi").click(function(){ 
    document.getElementById('myText').value=this.value; 
    // Or 
    // $('#myText').attr('value', this.value); 
}); 

Si vous souhaitez utiliser une chaîne, sans doute le meilleur pour coller avec la nouvelle HTML5 data- prefix:

HTML:

<li data-value="myLi" class="myLi">My element</li> 

en utilisant JavaScript jQuery:

$(".myLi").click(function(){ 
    document.getElementById('myText').value=$(this).attr('data-value'); 
    // Or 
    // $('#myText').attr('value', $(this).attr('data-value')); 
}); 
+0

C'est pourquoi l'attribut value apparaît dans la liste des attributs de li dans dreamweaver, merci pour cette réponse. – SmootQ

+0

@Simo: Pas de soucis, heureux que cela a aidé. :-) –

1

Je pense que ce que vous voulez est le suivant:

$(".myLi").click(function(){ 
    $('#mytext').val($(this).text()); 
}); 

Voici une démo de cette: http://jsfiddle.net/Ender/QdWxH/

Ou si vous vouliez la val de cet attribut de valeur: Comme le souligne Felix, la valeur n'est pas un attribut valide de <li>. (Voir la réponse @TJ Crowder) Vous pouvez changer cela à data-value, comme ceci:

<li data-value="myLi" class="myLi">My element</li> 

Ensuite, faites ceci:

$(".myLi").click(function(){ 
    $('#mytext').val($(this).data('value')); 
}); 

Démo de ce: http://jsfiddle.net/Ender/BHrmR/

+0

merci, cela a été très utile – SmootQ

+0

Heureux d'aider :) – Ender

2

Essayez le

suivant
$(".myLi").click(function() { 
    $("#myText").val($(this).text()); 
}); 
+0

Vous avez manqué votre proche paren et point-virgule :) – Ender

+0

et @Ender Je pense que l'OP demande de prendre une valeur à partir d'un attribut sur le 'li' (dans ce cas, l'attribut 'value' syntaxiquement invalide), pas le texte de' li'. – Phrogz

+0

@Ender, mis à jour merci! – JaredPar

3

AFAIK value n'est pas l'attribut valide pour li éléments. (pas tout à fait vrai, voir @T.J. Crowder's answer)
Vous pouvez utiliser rel si:

<li rel="myLi" class="myLi">My element</li> 

Et pour définir la valeur de l'élément d'entrée, utilisez val():

$(".myLi").click(function(){ 
    $("#mytext").val($(this).attr('rel')); 
}); 

Si vous voulez obtenir le texte de l'élément li à la place, utilisez $(this).text().

Référence: attr, text

+0

Ou vous pouvez utiliser 'data-value' (HTML5) et' $ (this) .data ('value') '. Bien qu'il soit syntaxiquement incorrect en pré-HTML5 d'injecter des attributs supplémentaires, il est inoffensif sur tous les navigateurs et toutes les versions que je connais. L'utilisation de 'data-value' au lieu de' value' arrive aussi à la rendre syntaxiquement valide pour un doctype HTML5. – Phrogz

+0

merci pour cette réponse – SmootQ

+1

* "T.J. Coder's answer" * LOL !! Lapsus? –

0

Vous pouvez utiliser attribut global 'title' pour rapide et facile.

<li title="myLi" class="myLi">My element</li> 

puis

$(".myLi").click(function(){ 
    document.getElementById('myText').value=this.attr('title'); 
}); 

Hope this aide.

Questions connexes