2016-07-25 7 views
-2

würde Ich mag durch all die Auswahleingänge auf einer Seite Schleife und wenn der gewählte Wert nicht eine bestimmte Option dann auf diesen Wert gesetzt ausgewähltjQuery Schleife durch wählt und eingestellt ausgewählte Option

ich einige wählt haben

<select name="select1"> 
    <option value="1">One</option> 
    <option value="2" selected>Two</option> 
    <option value="3">Three</option> 
    <option value="4">Four</option> 
    <option value="5">Five</option> 
</select> 

<select name="select2"> 
    <option value="1">One</option> 
    <option value="2">Two</option> 
    <option value="3">Three</option> 
    <option value="4">Four</option> 
    <option value="5">Five</option> 
</select> 

<select name="select3"> 
    <option value="1">One</option> 
    <option value="2">Two</option> 
    <option value="3">Three</option> 
    <option value="4">Four</option> 
    <option value="5">Five</option> 
</select> 

ich Schleife durch sie wie so, aber ich kann nicht herausfinden, wie die ausgewählte Eigenschaft Option auf ‚2‘, wenn es nicht bereits ausgewählt ist

$('select').each(function() { 

    var selected = $(this).find(":selected"); 

    if (selected.val() != 2) { 
     // do some stuff 

    } 

} 

EDIT:

Ich sollte es ausarbeiten. Wenn ein Auswahleingabewert geändert wird, hängt eine Zeichenfolge an, z. '-updated' auf den Eingabewert, da jede Eingabe in eine Datenbank geschrieben wird. Idealerweise würde ich dies nur für Eingänge machen, die sich für Effizienz geändert haben.

Also möchte ich alle Selects-Eingänge setzen, die nicht bereits Option 2 ausgewählt haben und einen Wert von "2-updated" haben

Danke für alle Antworten bisher

+2

Es spielt keine Rolle, ob es bereits ausgewählt ist - setzen Sie es einfach erneut und jQuery wird sich darum kümmern. Wenn Sie alle auf "2" setzen, brauchen Sie nicht einmal die Schleife, nur '$ ('select'). Val ('2')' –

+1

'$ ('select'). Val ('2 '); ' –

+0

oder Sie wollen etwas' $ ('select: not (: hat (: ausgewählt))'). Val ('2');' –

Antwort

1

Sie können die gewünschte Option auf .val()-Methode übergeben, während wählen Targeting gewünschte Option Element auszuwählen:

$('select').val('2'); 

Arbeits Snippet:

$('select').val('2');
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.0.0/jquery.min.js"></script> 
 
<select name="select1"> 
 
    <option value="1">One</option> 
 
    <option value="2">Two</option> 
 
    <option value="3" selected>Three</option> 
 
    <option value="4">Four</option> 
 
    <option value="5">Five</option> 
 
</select> 
 

 
<select name="select2"> 
 
    <option value="1">One</option> 
 
    <option value="2">Two</option> 
 
    <option value="3">Three</option> 
 
    <option value="4">Four</option> 
 
    <option value="5">Five</option> 
 
</select> 
 

 
<select name="select3"> 
 
    <option value="1">One</option> 
 
    <option value="2">Two</option> 
 
    <option value="3">Three</option> 
 
    <option value="4">Four</option> 
 
    <option value="5">Five</option> 
 
</select>

+0

Wenn ich eine Select-Eingabe ändere, füge ich eine Zeichenkette '-updated' an den Wert an, gibt es eine Möglichkeit, alle Selects, die nicht schon Wert = 2 sind, auf Wert 2 zu setzen und diese hinzuzufügen String an sie? 'function set_updated() { var inputname = $ (this) .find (": selected ") [0] .value; if (! Inputname.match (/ aktualisiert/i)) { $ (this) .find (": selected").val (Eingangsname + "-aktualisiert"); } } ' – jdoe

+0

@jdoe: haben Sie nicht bekommen. Können Sie mehr ausarbeiten .. –

+0

Keine Sorgen. Auf der Formularaktion dieser Select-Eingaben würde ich gerne eine Schleife machen und einige Operationen (Webservice/Datenbankaufruf) ausführen, die ich in einer separaten PHP-Datei bearbeite, aber ich würde das nur dort tun, wo die Eingaben waren aktualisiert. Deshalb, wenn eine Auswahl geändert wird, habe ich eine Zeichenfolge "-updated" zum Optionswert wie folgt hinzugefügt - '