2016-08-16 1 views
0
<select name="InputSource" class="required page_basic" style="margin-left:23%" form="broadcastform" > 

     <option value="">Broadcast Input</option>    
     <option value="0">HDMIPhy</option>    
     <option value="1">USB Streaming</option>    
     <option value="2">MPEC-TS Interface</option>    
     <option value="3">VIP(Ethernet)</option>   

</select> 

Also im Grunde, ich versuche, seinen Text durch seinen Wert zu finden. Wenn beispielsweise Wert = 0 ist, gebe ich "HDMIPhy" zurück.JQuery Finden <option> Tag, indem sie es Wert in <select>

Also dieses Select-Tag ist das vierte Tag im "Form" -Tag. Das habe ich versucht.

$("select:nth-child(4), #someid").text() 

aber irgendwie möchte ich nicht allen Optionstag eine eindeutige ID geben, die erschöpft sein wird. Ist es möglich, es durch seinen Wert zu bekommen? Außerdem wird das 1., 2., 3. Tag im Formulartag nicht ausgewählt. Ist es möglich, nur für das Formular zu wählen, das bedeutet 1. Tag in meinem Fall wählen. Hat jemand eine Idee?

+0

Sie den Wert wollen, für die man ausgewählt – Maharajan

+0

[attribut e selector] (https://api.jquery.com/attribute-equals-selector/) – epascarello

+0

Wenn Sie jQuery in Ihren Projekten verwenden möchten, nehmen Sie sich ein paar Minuten Zeit, um die [vollständige Liste der Selektoren] zu durchsuchen (http://api.jquery.com/category/selectors/). Es gibt nicht so viele, und in Zukunft wirst du eine bessere Vorstellung davon haben, wie man jQuery dazu bringt, Dinge zu tun. (Oder durchsuchen Sie die [Liste aller Methoden * und * Selektoren] (http://api.jquery.com/).) – nnnnnn

Antwort

4

Sie könnten eine Attributselektor verwenden:

$("select[name='InputSource'] option[value='0']").text(); //"HDMIPhy" 

Oder wenn Sie einen variabls haben:

$("select[name='" + resul‌​t[i].name + "'] option[value='" + result[‌​i].value + "']").text(); 
+0

Genau! Warum würde ich nicht mit diesem .. – Pawan

+0

Aber in meinem Fall kommen. Ich habe ein JSON-Array, das das Ergebnis meiner Form ist. Kann es so verwendet werden $ ("select [name = result [i] .name] option [wert = ergebnis [i] .wert]"). Text(); es sieht ein bisschen wie verdrahtet aus. – Pawan

+0

'$ (" select [name = '"+ result t [i] .name +' '] option [wert ='" + ergebnis [i] .wert + ''] "). Text(); ' – dave

0

Verlassen Sie sich nicht auf Bestellung und Anzahl der Elemente. Verlassen Sie sich darauf, was diese Elemente sind.
Wenn Sie keine IDs verwenden möchten, können Sie Eingabenamen statt:

function displaySelectText(selectName, optionValue) { 
 
    var $select = $("select[name='" + selectName + "']"); 
 
    var $option = $select.find("option[value='" + optionValue + "']"); 
 
    
 
    return $option.text(); 
 
} 
 

 
console.log(displaySelectText("InputSource", "3"));
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 

 
<select name="InputSource"> 
 
    <option value="">Broadcast Input</option>    
 
    <option value="0">HDMIPhy</option>    
 
    <option value="1">USB Streaming</option>    
 
    <option value="2">MPEC-TS Interface</option>    
 
    <option value="3">VIP(Ethernet)</option>   
 
</select>

+0

$ ("select [name = '" + selectName +' '] "); Ist das die richtige Syntax? koz die Konsole erzähle mir immernoch einen Syntaxfehler. – Pawan

+0

alert ($ ("select [name = '" + result t [0] .name +' '] option: selected ") .text()); es sagte, das ist ein Syntaxfehler innerhalb – Pawan

+0

@Pawan Es ist richtig und es funktioniert für mich. Sie haben eine Art unsichtbares Symbol in Ihrem Keyword. Es ist eigentlich nicht "result [0]", sondern "resul ‌ ​ t [0]". Ich kann nicht sagen, warum es passiert ist, aber Sie können dieses Wort einfach entfernen und es erneut eingeben. –

0

Wenn Sie schon Wert eingestellt haben, dann können Sie durch einfaches ausgewählten Text erhalten:

var itemText = $("select[name='InputSource'] option:selected").text(); 
console.log(itemText); 

Wenn Ihr Wert nicht und Sie will statisch, dann können Sie erhalten von:

var itemText = $("select[name='InputSource'] option[value='1']").text(); 
console.log(itemText); 
0

nur als Alternative, können Sie auch .filter() verwenden:

var x = $('select[name="InputSource"] > option').filter(function(index, element){ 
 
     return $(element).val() == "1"; 
 
    }).text(); 
 

 
alert(x);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> 
 
<select name="InputSource" class="required page_basic" style="margin-left:23%" form="broadcastform" > 
 

 
     <option value="">Broadcast Input</option>    
 
     <option value="0">HDMIPhy</option>    
 
     <option value="1">USB Streaming</option>    
 
     <option value="2">MPEC-TS Interface</option>    
 
     <option value="3">VIP(Ethernet)</option>   
 

 
</select>

0

$("#myselect option:selected").text();
<select id="myselect"> 
 
    <option value="1">Mr</option> 
 
    <option value="2">Mrs</option> 
 
    <option value="3">Ms</option> 
 
    <option value="4">Dr</option> 
 
    <option value="5">Prof</option> 
 
</select>

Verwandte Themen