2016-04-15 13 views
-1

Ich habe ein Textfeld in einem Dropdown ohne ID oder Name. Ich muss den Wert der Textbox erhalten. Wie mache ich das? Hier ist, was ich habe:jQuery Wert eines Textbox Kind in einem Dropdown

https://jsfiddle.net/gfinzer/otqydwru/1/

<select id="ddlInsuranceCompany" name="insuranceCompany"> 
    <option value="1">America First</option> 
    <option value="1">Indiana</option> 
    <option value="1">Peerless</option> 
    <input type="text" value="Test" /> 
</select> 
var myValue = $('#ddlInsuranceCompany').children(':text').first().val(); 
alert(myValue); 
+1

Ihre HTML ist ungültig - ein 'input' kein untergeordnetes Element eines' select' sein kann. Wenn Sie das DOM untersuchen, werden Sie feststellen, dass der Browser dies automatisch korrigiert hat, indem Sie die Eingabe an einen gültigen Ort verschoben haben. 'myValue' ist leer, weil' .children (': text') 'das Element im DOM nicht findet –

+0

Da Rory sagte, dass dein HTML ungültig ist ... aber wenn du immer noch Wert von textbx bekommen willst, kannst du' var myValue = $ ('input [type = "text"]'). val(); 'bitte überprüfen Sie aktualisierte Geige https://jsfiddle.net/otqydwru/2/ – RRR

+0

@RRR OP ist speziell sagt, dass es innerhalb der sein sollte 'Auswählen'. Wie Sie Geige wählen wird es alle 'Textbox' –

Antwort

0

Ihre HTML ist ungültig - ein input kann kein untergeordnetes Element eines select sein. Wenn Sie das DOM untersuchen, werden Sie feststellen, dass der Browser dies automatisch korrigiert hat, indem Sie die Eingabe an einen gültigen Ort verschoben haben. myValue ist leer, weil .children(':text') das Element im DOM nicht findet.

Um dieses Problem zu beheben, können Sie den HTML-Code selbst ändern, indem Sie input hinter dem select platzieren und next() verwenden, um ihn abzurufen. Versuchen Sie folgendes:

<select id="ddlInsuranceCompany" name="insuranceCompany"> 
    <option value="1">America First</option> 
    <option value="1">Indiana</option> 
    <option value="1">Peerless</option> 
</select> 
<input type="text" value="Test" /> 
var myValue = $('#ddlInsuranceCompany').next(':text').val(); 
console.log(myValue); 

Updated fiddle

+0

Es handelt sich um ein Auto-Complete-Steuerelement eines Drittanbieters, das den Eingabe-Texttyp zum Dom innerhalb des Selektors hinzufügt. Es ist ungültig. Das ist nur das Durcheinander, in dem ich bin. –

+0

Der obige Code funktioniert immer noch mit dem ungültigen HTML: https://jsfiddle.net/otqydwru/3/. Sie sollten sich jedoch an den Ersteller dieses Plugins wenden, da dies ein ziemlich offensichtlicher Fehler ist. –

Verwandte Themen