Como você reopulam as opções geradas dinamicamente para um campo selecionado?
-
03-07-2019 - |
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. :-)
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 ...