2012-06-06 9 views
6

Ich aktualisiere die ausgewählte Option programmgesteuert mit jQuery, aber nichts ändert sich im Browser. (Das heißt, die alte ausgewählte Option bleibt ausgewählt, anstatt zu der neu ausgewählten Option zu wechseln.) Vorschläge?Aktualisieren auswählen nach ausgewählter Option wird von jQuery geändert

Danke. --Jeff

Ich habe eine einfache Form wie folgt aus:

<form id="form1" name="form1" method="" action=""> 
<p>Assign: 
<select name="assigner" id="assigner"> 
<option value="Sam" selected="selected">Sam</option> 
    <option value="Harry">Harry</option> 
    <option value="Fred">Fred</option> 
</select> 
<input type="button" name="button1" id="button1" value="Submit" /> 
</p> 
<p> Task A: <select name="assignment[]" id="assigner"> 
    <option value="Sam">Sam</option> 
    <option value="Harry" selected="selected">Harry</option> 
    <option value="Fred">Fred</option> 
</select> 
</p> 
<p>  
Task B: <select name="assignment[]" id="assigner"> 
    <option value="Sam">Sam</option> 
    <option value="Harry" selected="selected">Harry</option> 
    <option value="Fred">Fred</option> 
</select> 
</p> 
</form></div> 

und meine jQuery-Code sieht wie folgt aus:

<script type="text/javascript"> 
jQuery(document).ready(function(){ 
$('[name="button1"]').click(
    function(){ 
     var form = $(this).parents('form'); 
     var assigned = form.find(':selected').first().val(); 
     form.find(':selected').each(function(index){ 
      $(this).val(assigned).change(); 
     }); 
    } 
); 
}); 
</script> 
+1

IDs müssen eindeutig sein. – j08691

+0

Sie haben Recht. Vielen Dank. – jalperin

Antwort

4

ich die gewählte Option zu aktualisieren

mit programmatisch jQuery

Nicht so weit wie ich sehen kann. Sie setzen den Wert des ausgewählten option zurück, tun aber nichts, soweit ich das an die tatsächliche select Box erkläre.

Um eine select Box zu ändern, müssen Sie es identifizieren, rufen Sie dann val auf es, nicht einer seiner option Elemente.

Ich kann nicht erkennen, was Sie wollen Ihre input[name="button1"] zu tun, aber hier ist ein Beispiel für die Aktualisierung einer select Box: Live copy | source

HTML:

<select id="theSelect"> 
    <option value="1">One</option> 
    <option value="2">Two</option> 
    <option value="3">Three</option> 
</select> 
<input type="button" id="theButton" value="Click me"> 

JavaScript:

jQuery(function($) { 

    $("#theButton").click(function() { 
    $("#theSelect").val("2"); 
    }); 

}); 

Getrennt davon als j08691 in den Kommentaren darauf hingewiesen, können Sie den gleichen id Wert nicht zuweisen ("assigner") mehr als ein Element. id values must be unique im Dokument. Ihr Code zeigt Sie nicht mit der id, also kann dies nicht verwandt sein, aber es lohnt sich, zu melden.

+0

Mein Formular wird aus einer Datenbankabfrage generiert, so dass ich nicht unbedingt die IDs der Auswahlfelder (oder sogar wie viele im Formular angezeigt werden) kennen. Darüber hinaus gibt es mehrere Formulare (alle ähnlich strukturiert) auf jeder Seite. Was ich versuche, ist, dem Benutzer zu ermöglichen, alle SELECT-Felder in einem Formular mit der ausgewählten Option aus dem ersten Auswahlfeld zu aktualisieren. Also weist der Benutzer Harry allen Aufgaben zu, indem er Harry in der ersten Auswahlbox auswählt und einreicht. Was ich wirklich brauche, ist, denke ich, eine Möglichkeit, alle SELECT-Felder auszuwählen, die auf demselben Formular erscheinen wie die Schaltfläche, auf die geklickt wird. – jalperin

+0

@jalperin: * "Was ich wirklich brauche, ist, denke ich, eine Möglichkeit, alle SELECT-Felder auszuwählen, die auf demselben Formular erscheinen wie die Schaltfläche, auf die geklickt wird." * '$ (This) .closes ('form') .find ('select') 'würde es tun, aus einem Event-Handler auf der Schaltfläche. '$ (this)' umschließt die Schaltfläche in einem jQuery-Objekt. 'engste ('Form')' gibt ein jQuery-Objekt für das nächste 'form' -Element in der Hierarchie zurück. Dann 'find ('select')' findet alle 'select' Elemente in diesem Formular. –

1
<form id="form1" name="form1" method="" action=""> 
    <p>Assign: 
     <select name="assigner" id="assigner"> 
      <option value="Sam" selected="selected">Sam</option> 
      <option value="Harry">Harry</option> 
      <option value="Fred">Fred</option> 
     </select> 
     <input type="button" name="button1" id="button1" value="Submit" /> 
    </p> 
    <p> 
     Task A: <select name="assignment[]" id="assigner2"> 
      <option value="Sam">Sam</option> 
      <option value="Harry" selected="selected">Harry</option> 
      <option value="Fred">Fred</option> 
     </select> 
    </p> 
    <p>  
     Task B: <select name="assignment[]" id="assigner3"> 
      <option value="Sam">Sam</option> 
      <option value="Harry" selected="selected">Harry</option> 
      <option value="Fred">Fred</option> 
     </select> 
    </p> 
</form> 



<script type="text/javascript"> 
jQuery(document).ready(function(){ 
$('[name="button1"]').click(
    function(){ 
     var assigned = $("#assigner").val(); 
     $('#form1 select').val(assigned); 
    } 
); 
}); 
</script> 
Verwandte Themen