2010-02-27 9 views
9

Javascript hat textObject.defaultValue=somevalue zum Abrufen des Standardwerts (gespeicherter Wert von Seite laden) einer Eingabe, auch wenn Sie die Eingabe löschen und den Inhalt ersetzen, können Sie immer noch die Standard zurück. Wie folgt aus:Eigenschaft "defaultValue" für <select>?

// in the html page 
<input id="addr1" type="text" value="21 Oak St." /> 

// the jquery 
myInput = $("#addr1"); // the input, default value on page load = 21 Oak St. 

$(myInput).val('51 New St'); // wipe default and set new 

// alerts 21 Oak St 
alert($(myInput).val($(myInput)[0].defaultValue)); 

Wie erreichen Sie diese ein ausgesuchtes?

ist Boolean, nicht der Wert, so dass es nicht funktioniert.

Danke!

+1

Ich glaube nicht, 'selectedIndex' ist ein boolean sollte es eine ganze Zahl sein und als @Pointy sagte, wenn Sie die Optionen erhalten die defaultSelected iterieren Sie können den ausgewähltenIndex auf den Index der defaultSelected festlegen. – bendewey

+0

Sie müssen die Eigenschaft "selected" auf der Option selbst verwenden, die Sie als Standard festlegen möchten. Weiter auf dieser Straße. – vsync

Antwort

17

Sie möchten wahrscheinlich das Attribut "defaultSelected" von "option" -Elementen betrachten.

Anfangs ist "defaultSelected" wahr, wenn das ursprüngliche HTML des Options-Tags ein explizites "ausgewähltes" Attribut hatte. Sie können dies ändern, indem Sie das Attribut für Optionstags mit Javascript nach dem Laden der Seite als Antwort auf die von Ihnen gewünschten Bedingungen festlegen.

+1

+1 Ich wusste nichts von diesem, nett. – bendewey

0

Es kann mehrere "ausgewählte" Optionselemente geben, wählen Sie in diesem Fall die erste, wenn keine anderen Anforderungen festgelegt sind. @ Pointy Tipp ist korrekt, aber beachten Sie, dass die Eigenschaft "defaultValue" durch anderen Code auf derselben Seite überschrieben werden kann. Wenn es schreibgeschützt wurden wäre es sinnvoller sein :-)

4

mit JQuery wir etw wie dies tun können:

$('select[name="type_id"] option').map(function() 
{ 
    if($(this).attr('defaultSelected')==true) return this 
}).get(0).value; 

Dies wird die Standard gewählte Option Wert :)

1

Ich kehre Verwenden Sie die folgenden, um ein Forum zu durchlaufen, überprüfen Sie ihre Standardwerte und ihre aktuellen Werte.

Wenn das Skript eine einzelne Auswahlbox kreuzt, wird es durch die untergeordneten Elemente in der Auswahlbox durchlaufen.

oFormObject = document.forms[0]; 
for(i=0; i<oFormObject.elements.length; i++) 
{ 
    oValue = oFormObject.elements[i].value; 
    oType = oFormObject.elements[i].type; 
    if(oType=='select-one') { 
     for(k=0; k<oFormObject.elements[i].children.length; k++) 
     { 
      if(oFormObject.elements[i].children[k].defaultSelected==true){ 
       oformElement = oFormObject.elements[i].children[k].value; 
      } 
     } 
    }else{ 
     oformElement = oFormObject.elements[i].defaultValue; 
    } 
    console.log(oformElement); 
    console.log(oValue); 
    console.log(oType); 
} 
5

Dies ist die Jquery, die für mich funktioniert:

$('select[name="name_of_select"] option[selected]').val() 
+0

Das einzige Problem damit ist, wenn keine Optionen das 'ausgewählte' HTML-Attribut gesetzt haben, gibt es undefined zurück. In diesem Fall ist der Standardwert die erste Option. – megaflop

0

ich einen kürzesten Weg, dies zu tun gefunden:

$('select#myselect').find('option[defaultSelected]'); 
0

Ich laufe dies auf Seite Last auf die default manuell eingestellt für Auswahlkästchen.

// Set a default value property on selectboxes (for reverting) 
$('select').each(function(index,ele) { 
    var origvalue = $(this).val(), 
     defaultvalue = $(this).prop('defaultValue'); 

    // If the default value hasn't already been set for this selectbox 
    if(!defaultvalue) { 
     $(this).prop('defaultValue', origvalue); 
    } 
}); 
0

Der einfachste Weg, dies zu tun ist:

$('#selectbox option').prop('selected', function() { 
    return this.defaultSelected; 
}); 
Verwandte Themen