Pergunta

FundoEu tenho dois campos de formulário de seleção acorrentados: duração e frequência. Quando o usuário seleciona uma frequência, as opções de duração são inseridas dinamicamente. Existem opções padrão, mas elas são apenas para que o campo não esteja vazio quando o usuário o expande.

Por exemplo, as opções de frequência são "dia", "outro dia" e "semana". Se eu selecionar "dia", as opções de frequência mudam para "5 dias", "15 dias" e "30 dias".

ProblemaO problema ocorre quando o usuário envia o formulário com erros, o formulário é retornado com todos os campos do formulário re-preenchidos e os erros destacados-exceto para o campo Selecionar frequência-cujas opções são geradas dinamicamente. Não é destacado e suas opções são as opções padrão.

Existe uma maneira de eu poder ter essas opções re-capotar se o usuário enviar com um erro. Estamos fazendo um pouco de validação de JavaScript; portanto, essa situação não deve acontecer com tanta frequência, mas gostaria de comer um erro o mais indolor possível para os usuários.

CódigoEstou usando o jQuery e um plug -in jQuery chamado Cascade para encadear os dois campos. (http://plugins.jquery.com/project/cascade)

Aqui está o meu javascript personalizado.

Este script gera a lista de opções:

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; 
};

E este é o script que aciona a geração das opções de seleção:

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

A questãoAlguma idéia de como obter as opções de frequência geradas dinamicamente para re-capa quando o formulário é retornado ao navegador com erros? Poderia usar o plug -in Cascade que estou usando atualmente ou algum outro método?

A ajuda é muito apreciada. :-)

Foi útil?

Solução

Eu não estou familiarizado com este plugin, mas você não poderia apenas demitir o change() evento de #duration e/ou #frequency no document.ready?

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

Tenho certeza de que todo o script está fazendo é vincular coisas ao evento de mudança do seleto (por padrão, pelo menos), de modo que isso deve acionar o plug -in para trabalhar sua mágica ...

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top