2010-02-27 4 views
9

Javascript a textObject.defaultValue=somevalue pour récupérer la valeur par défaut (valeur stockée du chargement de la page) d'une entrée même si vous effacez l'entrée et remplacez le contenu, vous pouvez toujours récupérer la valeur par défaut. Comme ceci:Propriété "defaultValue" pour <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)); 

Comment pouvez-vous y ceci sur une sélection?

selectedIndex est booléen, pas la valeur, donc cela ne fonctionne pas.

Merci!

+1

Je ne pense pas 'selectedIndex' est un booléen, il doit être un entier et comme @Pointy a dit que si vous itérer les options obtenir le defaultSelected vous pouvez définir l'index selectedIndex sur l'index de defaultSelected. – bendewey

+0

vous devez utiliser la propriété "selected" sur l'option que vous voulez utiliser par défaut. continuer sur cette route. – vsync

Répondre

17

Vous souhaitez probablement examiner l'attribut "defaultSelected" des éléments "option".

Initialement, "defaultSelected" sera vrai si le code HTML d'origine de la balise option avait un attribut "selected" explicite. Vous pouvez le modifier en définissant l'attribut sur les balises d'option avec Javascript après le chargement de la page, en réponse aux conditions que vous souhaitez.

+1

+1 Je ne connaissais pas celui-ci, sympa. – bendewey

0

Il peut y avoir plusieurs éléments d'option "sélectionnés", dans ce cas, choisissez le premier si aucune autre exigence n'est définie. La pointe @Pointy est correcte mais sachez que la propriété "defaultValue" peut être écrasée par un autre code dans la même page. Si elle était en lecture seule, il serait plus utile :-)

4

avec Jquery nous pouvons faire qqch comme ceci:

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

Ceci renverra la valeur par défaut Sélectionné valeur de l'option :)

1

I utilisé ce qui suit pour faire une boucle sur un forum, vérifier leurs valeurs par défaut et leurs valeurs actuelles.

Si le script vient à travers une seule selectbox, il passera à travers les enfants sur la selectbox.

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

C'est le jquery qui fonctionne pour moi:

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

Le seul problème avec ceci est que si aucune option n'a l'attribut HTML 'selected' défini, elle renvoie undefined. Mais dans ce cas, la valeur par défaut est la première option. – megaflop

0

J'ai trouvé un chemin le plus court pour le faire:

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

J'exécuter sur la charge de page pour définir manuellement le defaultValue pour les boîtes Select.

// 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

La façon la plus simple de le faire est la suivante:

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