2016-12-04 1 views
0

Ich versuche, ein Kind der div form Gruppe zugreifen, genauer gesagt aus dem Wert des Eingangs zu drucken Ich versuche

<div class="form-group"> 
    <label>text</label> 
    <input name="text" type="text" class="form-control" value="123456" /> 
    <script> 
     alert($(this).find("input").val()); 
    </script> 
</div> 

Warum funktioniert dieser Code nicht? Ich bekomme undefined. Ich sollte erhalten 123456

+0

Sie nicht mit '$ (this)' richtig. Probieren Sie '$ ('input.form-control'). Val()' - oder einfach '$ ('input'). Val()' – ochi

+1

Wie 'this' ist das' window' also '$ (this.document) 'oder' $ (document) 'oder nur' $ ('input') 'funktioniert genauso :) Aber warum benutzt du' this' hier? – yurzui

+0

Ich habe viele Formen und Eingaben, da der Javascript-Code in jedem div ist (wie im obigen Beispiel) wollte ich jedes div mit jquery referenzieren, aber anscheinend zeigt dies nicht auf das umgebende div, oder? –

Antwort

3

$ (this) verweist auf Elternanweisung. Zum Beispiel:

$('body').on('click', '.element', function(){ 
    $(this).find('input').val(); 
}) 

In diesem Fall $ (this) target ist ".element". In Ihrem Beispiel zeigen Sie auf nichts, so dass Sie keinen Wert erhalten können.

+0

so, wie das umschließende div? –

+0

Sie können etwas wie dieses versuchen: alert ($ ('. Form-group'). Find ('input [name = "text"]'). Val()); input [name = "text"] - das heißt, Sie suchen nach Eingabe mit Attribut name = text Aber dies ist nicht speichern Methode, wenn Sie viele Eingaben mit dem gleichen Namen attr in ".form-Gruppe" div . –

2

Try this:

var inputElement = $(document.currentScript).parent().find('input'); 
alert(inputElement.val()); 
Verwandte Themen