Hier ist eine alternative Lö unter der Annahme, dass jQuery verfügbar ist. Wenn Sie eine andere js-Dienstprogrammbibliothek als jQuery oder gar keine Bibliothek verwenden, ist dies weiterhin möglich. Es bindet nur eine Funktion an das onchange-Ereignis des Selects und analysiert den json von einem benutzerdefinierten Datenattribut.
<form>
<select name="AnySelect">
<option value="primary-value0" data-support='["test",128,2014,"blackberry"]' />
<option value="primary-value1" data-support='["test1",39,2013,"apricot"]' />
<option value="primary-value2" data-support='["test2",42,2012,"peach"]' />
<option value="primary-value3" data-support='[null,null]' />
<option value="primary-value4" data-support='[30,28,null]' />
</select>
.
.
.
<span style="visibility: hidden" id="Support_AnySelect-container"><span>
</form>
^ Markup ------- JavaScript v
//bind onchange once document is loaded and ready
$.ready(function(){ $('#TheSelector').on('change',UpdateHidden); });
function UpdateHidden(event)
{
//Create a base name for grouping dynamic values; ex: Support_AnySelect
Name='Support_'+SelectField.attr('name');
//Check if container was made for us already
Contain=$(this.parent).find('#'+Name+'-container');
if(Container.length===0) //make the container if missing
{
$(this).after('<span id="'+Name+'-container" style="visibility: none;"></span>');
Contain=$(this.parent).children('#'+Name+'-container');
}
//get our special multi-values, jQuery will auto decode the JSON
SupportValues = this.data('support');
Contain.empty(); //get rid of last select options
$.each(SupportValues,function(i,val)
{
Contain.append('<input type="hidden" name="'+Name+'['+i+'] value="'+val+'"/>');
});
}
Wichtigster Vorteil davon ist, dass es sollte in der Theorie, können Sie eine ‚variable Menge von Variablen schreiben "Aus der Form. Sie können das Skript auch anpassen, um bestimmte verschachtelte Objekte zu berücksichtigen. Solange Sie gültiges JSON an das Datenattribut Ihrer Wahl übergeben.
Wenn jemand dies ausprobiert, bevor ich es tue, lass es mich wissen. Ich werde das später testen, kann aber einige kleinere Fehler haben. Sie sollten in der Lage sein, dies für jedes select-Element zu verwenden, und versteckte Eingaben werden automatisch in ein anderes Element eingefügt. Skript sollte auch garantieren, dass diese in der gleichen Form für Sie sind und eindeutige, aber gruppierte Namen über HTTP-Array haben.
Klärung. Gib ein Beispiel dafür, was du willst. – EFraim
Bitte klären Sie was Sie wollen –
Ich habe meine Frage geklärt. Die falsch formatierten HTML-Code-Elemente wurden bisher nicht angezeigt. Danke –