¿Cómo volver a llenar las opciones generadas dinámicamente para un campo de selección?

StackOverflow https://stackoverflow.com/questions/808328

Pregunta

Fondo Tengo dos campos de formulario selectos encadenados: duración y frecuencia. Cuando el usuario selecciona una frecuencia, las opciones de duración se insertan dinámicamente. Hay opciones predeterminadas, pero esas son solo para que el campo no esté vacío cuando el usuario lo expanda.

Por ejemplo, las opciones de frecuencia son " día " ;, " otro día " y " semana " ;. Si selecciono "día", las opciones de frecuencia cambian a "5 días", "15 días" y "30 días".

Problema El problema surge cuando el usuario envía el formulario con errores, el formulario se devuelve con todos los campos del formulario rellenados y los errores resaltados, excepto el campo Selección de frecuencia, cuyas opciones se generan dinámicamente. No está resaltado y sus opciones son las opciones predeterminadas.

¿Hay alguna forma en que pueda volver a completar estas opciones si el usuario envía un error? Estamos haciendo un poco de validación de JavaScript, por lo que esta situación no debería suceder tan a menudo, pero nos gustaría cometer un error para los usuarios con una experiencia tan sencilla como sea posible.

Código Estoy usando jquery y un plugin de jquery llamado cascada para encadenar los dos campos. ( http://plugins.jquery.com/project/cascade )

Aquí está mi JavaScript personalizado.

Este script genera la lista de opciones:

var list1 = [
    {'When':'86400','Value':' ','Text':' '},
    {'When':'172800','Value':' ','Text':' '},
    {'When':'604800','Value':' ','Text':' '},
    {'When':'86400','Value':'432000','Text':'5 days'},
    {'When':'86400','Value':'1296000','Text':'15 days'},
    {'When':'86400','Value':'2505600','Text':'30 days'},
    {'When':'172800','Value':'1296000','Text':'15 days'},
    {'When':'172800','Value':'2505600','Text':'30 days'},
    {'When':'172800','Value':'3888000','Text':'45 days'},
    {'When':'604800','Value':'2505600','Text':'4 weeks'},
    {'When':'604800','Value':'3715200','Text':'6 weeks'},
    {'When':'604800','Value':'4924800','Text':'8 weeks'}
];

function commonTemplate(item) {
    return "<option value='" + item.Value + "'>" + item.Text + "</option>"; 
};

function commonMatch(selectedValue) {
    return this.When == selectedValue; 
};

Y este es el script que activa la generación de las opciones de selección:

jQuery("#duration).cascade("#frequency",{
    list: list1,            
    template: commonTemplate,
    match: commonMatch          
})

La pregunta ¿Alguna idea sobre cómo obtener las opciones de frecuencia generadas dinámicamente para volver a llenar cuando el formulario se devuelve al navegador con errores? ¿Podría usar el complemento en cascada que estoy usando actualmente o algún otro método?

La ayuda es muy apreciada. :-)

¿Fue útil?

Solución

No estoy familiarizado con este complemento, pero ¿no podría simplemente activar el evento change () de #duration y / o #frequency en document.ready?

$(document).ready(function() {
    $('#duration').change();
    $('#frequency').change();
});

Estoy bastante seguro de que todo lo que está haciendo el script es vinculante para el evento de cambio de la selección (al menos de manera predeterminada), por lo que debería activar el complemento para que funcione de forma mágica ...

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top