<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Quenerapú &#187; lista</title>
	<atom:link href="http://quenerapu.com/etiquetas/lista/feed/" rel="self" type="application/rss+xml" />
	<link>http://quenerapu.com</link>
	<description>Sentado delante de un ordenador desde 1982. ¿De qué voy a hablar, si no?</description>
	<lastBuildDate>Thu, 19 Jan 2012 13:02:00 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<item>
		<title>De checkbox múltiple a lista</title>
		<link>http://quenerapu.com/javascript/de-checkbox-multiple-a-lista/</link>
		<comments>http://quenerapu.com/javascript/de-checkbox-multiple-a-lista/#comments</comments>
		<pubDate>Thu, 19 Mar 2009 13:08:51 +0000</pubDate>
		<dc:creator>Quenerapú</dc:creator>
				<category><![CDATA[javaScript]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[checkbox múltiple]]></category>
		<category><![CDATA[función]]></category>
		<category><![CDATA[lista]]></category>

		<guid isPermaLink="false">http://quenerapu.local/?p=100</guid>
		<description><![CDATA[Ésta es la técnica que uso cuando quiero llevar los datos de un checkbox múltiple en un formulario web a una tabla de datos.]]></description>
			<content:encoded><![CDATA[<p>No sé si es lo más correcto, pero habitualmente almaceno en las tablas de datos el contenido de un campo checkbox múltiple&#8230;</p>
<div id="attachment_115" class="wp-caption alignnone" style="width: 392px"><img class="size-full wp-image-115" title="Checkbox múltiple" src="http://quenerapu.com/wp-content/uploads/2009/03/checkboxmultiple1.jpg" alt="Checkbox múltiple" width="382" height="111" /><p class="wp-caption-text">Checkbox múltiple</p></div>
<p>&#8230;del siguiente modo:</p>
<div id="attachment_114" class="wp-caption alignnone" style="width: 392px"><img class="size-full wp-image-114" title="Tabla en la base de datos" src="http://quenerapu.com/wp-content/uploads/2009/03/checkboxmultiple2.jpg" alt="Tabla en la base de datos" width="382" height="120" /><p class="wp-caption-text">Tabla en la base de datos</p></div>
<p>Nomalmente uso comas para separarlos pero cuando esto es un problema tiro de caracteres menos frecuentes como la <a href="http://en.wikipedia.org/wiki/Vertical_bar">barra vertical <strong>|</strong></a>, por ejemplo.</p>
<p>Para convertir el contenido de un campo checkbox múltiple en una lista separada por comas utilizo esta función:</p>
<pre class="brush: jscript; title: ; notranslate">
function chkd2lst(frm,fld)
	{
	var t=&quot;&quot;;var s=&quot;,&quot;;
	for(var i=0;i&lt;document[frm].elements[&quot;_&quot;+fld].length;i++)
		{
		if(document[frm].elements[&quot;_&quot;+fld][i].checked)
			{
			t+=document[frm].elements[&quot;_&quot;+fld][i].value+s;
			}
		}
	document[frm].elements[fld].value=t;
	alert(document[frm].elements[fld].value);
	}
</pre>
<p>La función <strong>chkd2lst</strong> espera el nombre del formulario y el nombre del campo checkbox múltiple. También define que la coma será el separador de los elementos de la lista (<strong>variable s</strong>) pero esto es fácilmente editable. Al final de la función hay un <strong>alert</strong> que puede ser eliminado, por supuesto. Está ahí simplemente para comprobar que la función funciona.</p>
<p>Supongamos que, como en el ejemplo de las imágenes, el campo se llama <strong>diasClase</strong>. El formulario ha de llamar entonces al javaScript de esta manera:</p>
<pre class="brush: xml; title: ; notranslate">
&lt;form
	name=&quot;ficha&quot;
	method=&quot;post&quot;
	onSubmit=&quot;chkd2lst(this.name,'diasClase');return;&quot;
&gt;
</pre>
<p>Dentro del formulario, divido el tema del checkbox múltiple en dos partes. Por un lado la sucesión de checkboxes:</p>
<pre class="brush: xml; title: ; notranslate">
&lt;input name=&quot;_diasClase&quot; value=&quot;1&quot; type=&quot;checkbox&quot;&gt;Lunes
&lt;input name=&quot;_diasClase&quot; value=&quot;2&quot; type=&quot;checkbox&quot;&gt;Martes
&lt;input name=&quot;_diasClase&quot; value=&quot;3&quot; type=&quot;checkbox&quot;&gt;Miércoles
&lt;input name=&quot;_diasClase&quot; value=&quot;4&quot; type=&quot;checkbox&quot;&gt;Jueves
&lt;input name=&quot;_diasClase&quot; value=&quot;5&quot; type=&quot;checkbox&quot;&gt;Viernes
&lt;input name=&quot;_diasClase&quot; value=&quot;6&quot; type=&quot;checkbox&quot;&gt;Sábado
</pre>
<p>Y a continuación un campo hidden en el que guardaré la lista generada a partir de los checkboxes.</p>
<pre class="brush: xml; title: ; notranslate">
&lt;input name=&quot;diasClase&quot; value=&quot;&quot; type=&quot;hidden&quot;&gt;
</pre>
<p>La función espera que el nombre de los campos checkbox y hidden sean el mismo, pero que el nombre de cada <strong>input</strong> del checkbox múltiple vaya precedido de un <a href="http://en.wikipedia.org/wiki/Low_line">guión bajo <strong>_</strong></a> y que el nombre del campo hidden no lo lleve.</p>
<p>Y ya está: antes de enviar el formulario, <strong>chkd2lst</strong> convierte las opciones seleccionadas en <strong>_diasclase</strong> en una lista separada por comas y la lleva a <strong>diasclase</strong>. <a href="http://quenerapu.com/ejemplos/checkboxMultiple.htm">He colgado un ejemplo aquí</a> en el que sustituyo el <strong>campo hidden</strong> por un <strong>campo text</strong> sólo para que se vea el resultado.</p>
<p>Próximamente publicaré otro artículo en el que trataré el proceso inverso, es decir: traigo de la base de datos un campo conteniendo la lista separada por comas y marco como <strong>checked</strong> los elementos correspondientes del checkbox multiple. Imprescindible para poder editar, claro.</p>
]]></content:encoded>
			<wfw:commentRss>http://quenerapu.com/javascript/de-checkbox-multiple-a-lista/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
	</channel>
</rss>

