2017-02-13 4 views
0

ich eine Auswahlbox haben wie folgt:Select Element Rückkehr Wert nur, wenn sie deaktiviert

<select id="selectbox" class='info-entry-select' name="country"> 
    <option value="1" selected="selected">One</option> 
    <option value="2">Two</option> 
    <option value="3">Three</option> 
</select> 

Diese Auswahlbox ist in einem versteckten div die, wenn sie erscheinen, frischt die Auswahlbox Optionen mit Ajax und eine separate PHP-Datei . Hier ist das Javascript, das die Select-Box aktualisiert:

$("#changeselectoptions").on('click', function() { 
    $.ajax({ 
     type: "GET", 
     url: "includes/selectoptions.php", 
     dataType: 'json', 
     success: function(result){ 
      // Replace options of select box 
      var $el = $("#selectbox"); 
      var newOptions = result['catsOrderList']; 
      // newOptions correctly returns an array in the form of {1: "One", 2: "Two", 3: "Three", 4: "Four"} 
      $el.empty(); // remove existing options 
      $.each(newOptions, function(key,value) { 
       $el.append($("<option></option>").attr("value", key).text(value)); 
      }); 
     } 
    }); 
    return false; 
}); 

Wenn ich jetzt anrufen: $('#selectbox').val(); ich nicht definiert, und ich bin nicht sicher, warum? Erschwerend kommt noch verwirrender, wenn ich #selectbox (mit einem Kippschalter deaktivieren, die .attr('disabled', 'disabled');-#selectbox fügt hinzu, dann versuchen $('#selectbox').val(); ich die erwartete val von 1, 2, 3 usw.

Wie kann ich erhalte diesen Wert ohne die Box zu deaktivieren, oder was habe ich übersehen


Edit:?.

ich habe gefragt, wo mein $('#selectbox').val(); Anruf Es ist nicht mehr beteiligt, als ich oben erwähnt, aber gründlich zu sein, wird es von einem Submit-Button in der gleichen div als das Auswahlelement wie folgt aufgerufen:

$("#submitbutton").on('click', function() { 
    var selectBoxVal = $('#selectbox').val(); 
    console.log('value is: ' + selectBoxVal); 
    return false; 
}); 

bisher Meine einzige Idee ist, dass es ein dom sein kann Problem? Ich sage das ignorant, da mein Wissen nicht die ganzen Ins und Outs kennt, aber ich habe Probleme gesehen, bei denen Elemente live durch Javascript verändert und nicht korrekt von späteren Javascript-Aufrufen abgerufen werden - obwohl sie gut funktionieren, wenn die Elemente, die abgerufen werden, vorhanden sind die Seite geladen.

Ich weise keiner der Optionen eine ausgewählte Eigenschaft zu, aber ich glaube nicht, dass dies dazu führen sollte, dass undefined zurückgegeben wird. Wenn ich beispielsweise das Auswahlfeld deaktiviere, wird der Wert korrekt von derselben Abfrage zurückgegeben (wie oben erwähnt), aber es wird immer noch keine ausgewählte Eigenschaft manuell hinzugefügt. Ich schweife ab, aber ist es erforderlich, eine ausgewählte Eigenschaft beim Erstellen einer Reihe von Optionen in Javascript hinzuzufügen? Welche Option ursprünglich als ausgewählt angezeigt wird, ist für mich aus der Sicht der Nutzung irrelevant, aber ich würde gerne die besten Verfahren befolgen. Ich nahm an, dass der Browser die angezeigte Option als ausgewählt interpretiert, wenn keine als solche markiert wurde.

+0

Ich sehe nicht, wo Sie den Wert der Auswahl im 'success' Callback setzen oder eine der' 'ausgewählten' 'Eigenschaften einstellen ... –

+0

Warum erwarten Sie' 1, 2 , 3' ?? !! –

+1

Wo ist Ihr $ ('# selectbox'). Val(); Anruf? Wahrscheinlich rufst du es an, bevor du die Optionen anfügst. –

Antwort

0

Ich glaube, dass der "Wert" der Auswahl die <option> ist, die das Attribut "ausgewählt" in dieser Auswahlbox hat. Ansonsten gibt es keinen angezeigten Wert für diesen Eingang.

+0

Wie beantworten Sie die Frage/Lösen Sie das Problem? –

+1

Ein Teil der Frage war: "Was habe ich übersehen?" Ich glaube, dies ist ein Aspekt des Auswahlelements, das das OP vielleicht übersehen hat. – dmitrydwhite

+0

Die Auswahl nimmt die erste Option als ausgewählt, wenn dort standardmäßig niemand ist, also sollte in diesem Fall die '$ (" # selectbox ") .val()' '1' und nicht' undefined' zurückgeben. –

Verwandte Themen