Ci sono alcuni modi diversi si potrebbe fare questo. Il più semplice è avere alcuni campi separati, ognuno contenente un singolo gruppo di campi. Quindi, in jQuery, dipende dal valore del menu di selezione che puoi mostrare/nascondere questi campi, ad es.
<fieldset id="f1">
<input name="something1" />
<input name="something2" />
<input name="something3" />
</fieldset>
<fieldset id="f2">
<input name="something4" />
<input name="something5" />
<input name="something6" />
</fieldset>
<select name="fieldset-choice">
<option value="f1">Fieldset 1</option>
<option value="f2">Fieldset 2</option>
</select>
<script type="text/javascript">
jQuery('select[name=fieldset-choice]').change(function(){
var fieldsetName = $(this).val();
$('fieldset').hide().filter('#' + fieldsetName).show();
});
// We need to hide all fieldsets except the first:
$('fieldset').hide().filter('#f1').show();
</script>
Nota: Per la tecnica di cui sopra per essere del tutto discreto si potrebbe desiderare di costruire dinamicamente il select-menu con i nomi di tutti i diversi fieldsets.
In alternativa è possibile far precedere ogni campi Nome con un prefisso significativo, e poi nascondere/mostrare in base a tale attributo:
<input name="group1-name1" />
<input name="group1-name2" />
<input name="group2-name3" />
<input name="group2-name4" />
<input name="group2-name5" />
<select name="field-choice">
<option value="group1">Group 1</option>
<option value="group2">Group 2</option>
</select>
<script type="text/javascript">
jQuery('select[name=field-choice]').change(function(){
var groupName = $(this).val();
$('input').hide().filter('[name^=' + groupName + ']').show();
});
// We need to hide all fields except those of the first group:
$('input').hide().filter('[name^=group1]').show();
</script>
Ci scusiamo per l'inizio post dito scivolato sulla tastiera. Sembra che abbia ottenuto un downvote per questo. – bendewey
dovrebbe this.hide(); essere sostituito con $ (this) .hide(); –
Ho provato questo e funziona. Tieni presente che potrebbe essere necessario nascondere inizialmente le visualizzazioni/mostrare l'impostazione predefinita. – bendewey