2010-02-27 14 views
9

Javascript tiene textObject.defaultValue=somevalue para recuperar el valor predeterminado (valor almacenado de la carga de la página) de una entrada, incluso si borra la entrada y reemplaza el contenido, aún puede recuperar el valor predeterminado. De esta manera:propiedad "defaultValue" para <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)); 

¿Cómo se logra esto en un selecto?

selectedIndex es booleano, no es el valor, por lo que no funciona.

Gracias!

+1

no creo 'selectedIndex' es un valor lógico que debe ser un número entero y como dijo @Pointy si iterar las opciones de obtener el defaultSelected puede establecer selectedIndex en el índice de DefaultSelected. – bendewey

+0

necesita usar la propiedad "seleccionada" en la opción que desea que sea la predeterminada. continuar en ese camino. – vsync

Respuesta

17

Probablemente desee ver el atributo "defaultSelected" de los elementos de "opción".

Inicialmente, "defaultSelected" será verdadero si el HTML original de la etiqueta de opción tenía un atributo explícito "seleccionado". Puede cambiar eso configurando el atributo en las etiquetas de opción con Javascript después de que la página se haya cargado, en respuesta a las condiciones que desee.

+1

+1 No sabía sobre esto, agradable. – bendewey

0

puede haber múltiples elementos de opción "seleccionados", en ese caso elija el primero si no se establecen otros requisitos. La sugerencia de @Pointy es correcta, pero tenga en cuenta que la propiedad "defaultValue" puede ser sobrescrita por otro código en la misma página. Si fuera sólo lectura sería más útil :-)

4

con jQuery podemos hacer algo como esto:

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

Esto devolverá el valor de la opción seleccionada por defecto :)

1

I utilizó lo siguiente para recorrer un foro, verificar sus valores predeterminados y sus valores actuales.

si la secuencia de comandos aparece en cruz, una sola casilla de selección recorrerá los elementos secundarios en la casilla de selección.

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

Este es el jquery que funciona para mí:

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

El único problema con esto es que si ninguna opción tiene el atributo HTML 'selected' establecido, devuelve indefinido. Pero en ese caso, el valor predeterminado es la primera opción. – megaflop

0

He encontrado un camino más corto para hacer esto:

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

que ejecuta este al cargar la página para configurar manualmente el defaultValue para cuadros de selección.

// 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 forma más sencilla de hacer esto es:

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