He aquí un solu alternativa suponiendo que jQuery está disponible. Si usa una biblioteca de utilidades js distinta de jQuery, o ninguna biblioteca, esto aún es posible. Simplemente vincula una función al evento onchange de selección y analiza el json desde un atributo de datos personalizado.
<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>
^ marcado ------- 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+'"/>');
});
}
beneficio principal de esto es que debería, en teoría, permitirá publicar una 'cantidad variable de variables 'de la forma. También puede ajustar la secuencia de comandos para dar cuenta de ciertos objetos anidados. Siempre que pase JSON válido al atributo de datos de su elección.
Si alguien lo prueba antes que yo, por favor, hágamelo saber. Lo probaré más adelante, pero es posible que tenga algunos errores menores. Debería poder usar esto en cualquier elemento de selección y las entradas ocultas se pueblan automáticamente dentro de otro elemento; script también debe garantizar que estos estén en la misma etiqueta de formulario para usted y que tengan nombres únicos pero agrupados a través de una matriz HTTP.
Aclarar. Da un ejemplo de lo que quieres. – EFraim
Por favor, aclare lo que quiere –
He aclarado mi pregunta. Lo sentimos, los elementos del código HTML formateados incorrectamente no se mostraban antes. Gracias –