Versão atual:

readonly em diversos selects

Oi pessoal!

Tenho um processo com um formulário contendo mais de 40 selects. Existe uma etapa neste processo onde todos estes selects devem estar no formato "somente leitura". Embora pareça simples, não consegui achar uma forma rápida e elegante de fazer isso.

A primeira coisa que pensei em fazer foi um loop que colocava o atributo readonly em todos os selects

var selects = document.getElementsByTagName("select");
for (var i=0 ; i<selects.length; i++){
  selects[i].setAttribute("readonly","");
}

No entanto, como muitos de vocês já sabem, colocar apenas o atributo readonly na tag select nao impede o usuario de selecionar outro valor para o campo. Ainda é possível clicar no campo e selecionar outra opção.

Tambem pensei em adicionar o atributo disabled, mas isso não é possível, pois ao adicionar este atributo os campos preenchidos não são reconhecidos pelo fluig. Inclusive, em uma parte do dev, o fluig recomenda que não se utilize o atributo disabled.

Me restou então fazer um form.setEnabled para cada campo do formulario. Ou seja, fazer um form.setEnabled QUARENTA vezes. Uma para cada "name". Isto me custaria muito tempo, uma vez que o nome dos campos não segue nenhum padrão.

Sim, 40 campos é algo possível de se fazer na mão, mas estou fazendo essa pergunta pois esta situação é algo muito recorrente em diversos formulários. Me economizaria bastante tempo no longo prazo

Existe alguma outra forma de fazer isso?

OBS: Me faz muita falta no fluig funções como "form.setEnabledByClassName". O que vocês acham?

Versões (2):

Ver a versão formatada

readonly em diversos selects

Comentário

new question