2010-12-10 14 views
1

hallo ich li-Tag wie folgt:Übergeben Sie einen li-Tag-Wert zu einem Texteingabe

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

ich diesen jquery Code versucht:

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

zu wissen, dass mytext ein Eingang vom Typ Text, wie kann ich den Wert des li-Tags an die Eingabe übergeben, wenn es nicht möglich ist, wie kann ich den innerHTML verwenden, um den Code zwischen den li-Tags zu übergeben.

der Code, den ich versuchte, nicht funktioniert danke

Antwort

3

Trotz allem, was einige gesagt haben, value ist in der Tat ein gültiges Attribut für li Elemente, und es ist in der value Eigenschaft reflektiert, aber es ist erforderlich ein integer (reference) sein:

Das value-Attribut muss, falls vorhanden, eine gültige Ganzzahl sein, die den Ordinalwert des Listenelements angibt.
...
Wenn das Wertattribut vorhanden ist, müssen Benutzeragenten es als Ganzzahl analysieren, um den Wert des Attributs zu bestimmen. Wenn der Wert des Attributs nicht in eine Zahl konvertiert werden kann, muss das Attribut so behandelt werden, als wäre es nicht vorhanden.Das Attribut hat keinen Standardwert.

Wenn Ihr klebte Code nur eine schnelle Bearbeitung war, und Sie werden wirklich eine ganze Zahl verwenden, dann würde der Code funktionieren, wenn Sie tat nicht Wrap this in einem jQuery Beispiel:

HTML:

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

JavaScript jQuery:

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

Wenn Sie eine Zeichenfolge verwenden möchten, wahrscheinlich am besten mit dem neuen HTML5 data- prefix bleiben:

HTML:

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

JavaScript mit jQuery:

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

Deshalb ist der Wert Attribut in der Liste der Attribute von li in Dreamweaver erscheint, danke für diese Antwort. – SmootQ

+0

@Simo: Keine Sorge, froh, dass geholfen hat. :-) –

1

Ich denke, was Sie wollen, ist dies:

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

Hier ist eine Demo davon: http://jsfiddle.net/Ender/QdWxH/

Oder wenn Sie wollten die val von diesem Wertattribut: Wie Felix darauf hinweist, ist value kein gültiges Attribut von <li>. (Siehe @TJ Crowder Antwort) Sie könnten, dass data-value ändern, etwa so:

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

diese dann tun:

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

Demo davon: http://jsfiddle.net/Ender/BHrmR/

+0

Vielen Dank, das war sehr nützlich – SmootQ

+0

Glücklich zu helfen :) – Ender

2

Versuchen Sie, die folgenden

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

Sie vermisste Ihre Nähe Paren und Semikolon :) – Ender

+0

und @Ender Ich denke, das OP fragt, um einen Wert von einem Attribut auf dem 'li' zu nehmen (in diesem Fall das syntaktisch ungültige "Wert" -Attribut), nicht der Text des "li". – Phrogz

+0

@Ender, aktualisiert danke! – JaredPar

3

AFAIK value ist kein gültiges Attribut für li Elemente. (nicht ganz richtig, siehe @T.J. Crowder's answer)
Sie rel obwohl verwenden können:

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

und der Wert des Eingangselementes zu setzen, verwenden Sie val():

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

Wenn Sie möchten, Holen Sie sich stattdessen den Text aus dem li Element, verwenden Sie $(this).text().

Referenz: attr, text

+0

Oder Sie könnten 'Daten-Wert' (HTML5) und' $ (this) .data ('Wert') '' verwenden. Obwohl es in pre-HTML5 syntaktisch falsch ist, zusätzliche Attribute zu injizieren, ist es in allen mir bekannten Browsern und Versionen harmlos. Die Verwendung von 'data-value' anstelle von' value' macht es syntaktisch gültig für einen HTML5 Doctype. – Phrogz

+0

danke für diese Antwort – SmootQ

+1

* "T.J. Coders Antwort" * LOL !! Freudscher Schlupf? –

0

Sie globale Attribut 'Titel' können für schnell und einfach.

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

dann

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

Hope this Hilfe.

Verwandte Themen