<?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>Desarrollador Web en Colombia &#124; Iván Bustos</title>
	<atom:link href="http://www.ivanbustos.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.ivanbustos.com</link>
	<description>Desarrollador Web en Colombia</description>
	<lastBuildDate>Thu, 22 Dec 2011 17:46:07 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.4</generator>
		<item>
		<title>Adiós a un tirano</title>
		<link>http://www.ivanbustos.com/varios/adios-a-un-tirano/</link>
		<comments>http://www.ivanbustos.com/varios/adios-a-un-tirano/#comments</comments>
		<pubDate>Thu, 22 Dec 2011 17:46:07 +0000</pubDate>
		<dc:creator>Iván Bustos</dc:creator>
				<category><![CDATA[varios]]></category>

		<guid isPermaLink="false">http://www.ivanbustos.com/?p=319</guid>
		<description><![CDATA[Buenísimo documental para aprender de la horrible Korea que dejaron Kim Jong ll y su tenebroso padre.]]></description>
			<content:encoded><![CDATA[<p><img src="http://www.ivanbustos.com/wp-content/uploads/2011/12/kim.jpg" alt="El tirano" /></p>
<p>A propósito de la <a href="http://www.eltiempo.com/mundo/asia/corea-del-norte-kim-jong-il-_10919348-4">reciente muerte de Kim Jong ll</a>, recomiendo ver mucho ver el documental &#8220;<a href="http://www.youtube.com/watch?v=mxLBywKrTf4">Inside North Korea</a>&#8221; de la National Geographic. El documental hace un fenomenal trabajo en mostrar el nivel de adoctrinamiento que tienen los nor-koreanos. Como resultado de este lavado de cerebros en masa, todo el mundo en ese país parece adorar a su &#8220;gran líder&#8221;. Es difícil de imaginar otra sociedad tan reprimida y tan aislada como ésta. </p>
<p>Recomiendo ver el corto documental a todos nosotros que damos nuestra libertad como sentado, como un hecho o como algo que no se puede ver ni sentir.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ivanbustos.com/varios/adios-a-un-tirano/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Nominados al Premio Colombia en Línea 2011</title>
		<link>http://www.ivanbustos.com/desarrollo-web/nominados-al-premio-colombia-en-linea-2011/</link>
		<comments>http://www.ivanbustos.com/desarrollo-web/nominados-al-premio-colombia-en-linea-2011/#comments</comments>
		<pubDate>Mon, 25 Jul 2011 23:47:31 +0000</pubDate>
		<dc:creator>Iván Bustos</dc:creator>
				<category><![CDATA[Desarrollo Web]]></category>

		<guid isPermaLink="false">http://www.ivanbustos.com/?p=271</guid>
		<description><![CDATA[En esta lista detallo los nominados al premio Colombia en línea 2011. La premiación es el próximo 17 de agosto en Bogotá.]]></description>
			<content:encoded><![CDATA[<p>El Ministerio de Tecnologías de la Información y las Comunicaciones <a href="http://www.mintic.gov.co/index.php/mn-news/189-20110715gobierno" title="Haga clic aquí para visitar este sitio" rel="nofollow">anunció</a> la lista de nominados al Premio Colombia en Línea versión 2011. La ceremonia de premiación se llevará a cabo el próximo 17 de agosto en Bogotá. A continuación comparto la lista de nominados. Los sitios con la estrellita son mis favoritos personales en cada una de las categorías.<span id="more-271"></span></p>
<h3>Mejor sitio de Gobierno</h3>
<ul>
<li><a href="http://www.medellin.gov.co" rel="nofollow" title="Haga clic aquí para accesar a este sitio web">www.medellin.gov.co</a></li>
<li><a href="http://www.icfes.gov.co" rel="nofollow" title="Haga clic aquí para accesar a este sitio web">www.icfes.gov.co</a><img src="http://www.ivanbustos.com/wp-content/uploads/2011/07/star.gif" alt="favorito personal" /></li>
<li><a href="http://www.sic.gov.co" rel="nofollow" title="Haga clic aquí para accesar a este sitio web">www.sic.gov.co</a></li>
</ul>
<h3>Mejor sitio de comercio electrónico</h3>
<ul>
<li><a href="http://www.aires.aero" rel="nofollow" title="Haga clic aquí para accesar a este sitio web">www.aires.aero</a></li>
<li><a href="http://www.winkhosting.com" rel="nofollow" title="Haga clic aquí para accesar a este sitio web">www.winkhosting.com</a></li>
<li><a href="http://www.tuboleta.com" rel="nofollow" title="Haga clic aquí para accesar a este sitio web">www.tuboleta.com</a><img src="http://www.ivanbustos.com/wp-content/uploads/2011/07/star.gif" alt="favorito personal" /></li>
</ul>
<h3>Mejor sitio de servicios informativos</h3>
<ul>
<li><a href="http://www.rutanmedellin.org" rel="nofollow" title="Haga clic aquí para accesar a este sitio web">www.rutanmedellin.org</a></li>
<li><a href="http://www.elparlanteamarillo.com" rel="nofollow" title="Haga clic aquí para accesar a este sitio web">www.elparlanteamarillo.com</a><img src="http://www.ivanbustos.com/wp-content/uploads/2011/07/star.gif" alt="favorito personal" /></li>
<li><a href="http://www.rockombia.org" rel="nofollow" title="Haga clic aquí para accesar a este sitio web">www.rockombia.org</a></li>
</ul>
<h3>Mejor sitio Mypime</h3>
<ul>
<li><a href="http://www.plazamayor.com.co" rel="nofollow" title="Haga clic aquí para accesar a este sitio web">www.plazamayor.com.co</a><img src="http://www.ivanbustos.com/wp-content/uploads/2011/07/star.gif" alt="favorito personal" /></li>
<li><a href="http://www.impresionesfinas.com" rel="nofollow" title="Haga clic aquí para accesar a este sitio web">www.impresionesfinas.com</a></li>
<li><a href="http://www.papelerialacomuna.com" rel="nofollow" title="Haga clic aquí para accesar a este sitio web">www.papelerialacomuna.com</a></li>
</ul>
<h3>Mejor sitio de educación virtual</h3>
<ul>
<li><a href="http://www.unabvirtual.edu.co" rel="nofollow" title="Haga clic aquí para accesar a este sitio web">www.unabvirtual.edu.co</a><img src="http://www.ivanbustos.com/wp-content/uploads/2011/07/star.gif" alt="favorito personal" /></li>
<li><a href="http://www.e-sanitas.edu.co" rel="nofollow" title="Haga clic aquí para accesar a este sitio web">www.e-sanitas.edu.co</a></li>
<li><a href="http://www.senavirtual.edu.co" rel="nofollow" title="Haga clic aquí para accesar a este sitio web">www.senavirtual.edu.co</a></li>
</ul>
<h3>Mejor sitio política y democracia</h3>
<ul>
<li><a href="http://www.lasillavacia.com" rel="nofollow" title="Haga clic aquí para accesar a este sitio web">www.lasillavacia.com</a><img src="http://www.ivanbustos.com/wp-content/uploads/2011/07/star.gif" alt="favorito personal" /></li>
<li><a href="http://www.webmira.com" rel="nofollow" title="Haga clic aquí para accesar a este sitio web">www.webmira.com</a></li>
<li><a href="http://www.practicasdemocraticas.com" rel="nofollow" title="Haga clic aquí para accesar a este sitio web">www.practicasdemocraticas.com</a></li>
</ul>
<h3>Mejor sitio de investigación</h3>
<ul>
<li><a href="http://www.reddebibliotecas.org.co" rel="nofollow" title="Haga clic aquí para accesar a este sitio web">www.reddebibliotecas.org.co</a></li>
<li><a href="http://www.ieeetadeo.org" rel="nofollow" title="Haga clic aquí para accesar a este sitio web">www.ieeetadeo.org</a></li>
<li><a href="http://www.ensambladoencolombia.org" rel="nofollow" title="Haga clic aquí para accesar a este sitio web">www.ensambladoencolombia.org</a><img src="http://www.ivanbustos.com/wp-content/uploads/2011/07/star.gif" alt="favorito personal" /></li>
</ul>
<h3>Mejor sitio de responsabilidad ambiental</h3>
<ul>
<li><a href="http://www.paginasverdes.com.co" rel="nofollow" title="Haga clic aquí para accesar a este sitio web">www.paginasverdes.com.co</a><img src="http://www.ivanbustos.com/wp-content/uploads/2011/07/star.gif" alt="favorito personal" /></li>
<li><a href="http://www.ecoconsulta.com.co" rel="nofollow" title="Haga clic aquí para accesar a este sitio web">www.ecoconsulta.com.co</a></li>
<li><a href="http://www.redcolombiaverde.org" rel="nofollow" title="Haga clic aquí para accesar a este sitio web">www.redcolombiaverde.org</a></li>
</ul>
<h3>Mejor sitio móvil</h3>
<ul>
<li><a href="http://movil.bancolombia.com" rel="nofollow" title="Haga clic aquí para accesar a este sitio web">movil.bancolombia.com</a><img src="http://www.ivanbustos.com/wp-content/uploads/2011/07/star.gif" alt="favorito personal" /></li>
<li><a href="http://rcnmundo.com" rel="nofollow" title="Haga clic aquí para accesar a este sitio web">rcnmundo.com</a></li>
<li><a href="http://ucaldas.edu.co/movil" rel="nofollow" title="Haga clic aquí para accesar a este sitio web">ucaldas.edu.co/movil</a></li>
</ul>
<p>¡Felicidades a los nominados!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ivanbustos.com/desarrollo-web/nominados-al-premio-colombia-en-linea-2011/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Los 5 mejores inventos Colombianos</title>
		<link>http://www.ivanbustos.com/varios/los-5-mejores-inventos-colombianos/</link>
		<comments>http://www.ivanbustos.com/varios/los-5-mejores-inventos-colombianos/#comments</comments>
		<pubDate>Fri, 15 Jul 2011 20:28:00 +0000</pubDate>
		<dc:creator>Iván Bustos</dc:creator>
				<category><![CDATA[varios]]></category>

		<guid isPermaLink="false">http://www.ivanbustos.com/?p=260</guid>
		<description><![CDATA[Te comparto los que para mi son quizá los mejores inventos Colombianos en el área de la Ciencia y la tecnología.]]></description>
			<content:encoded><![CDATA[<p>Reflexionando hace unos días sobre la grandísima cantidad de aportes a la ciencia y la tecnología en los últimos años por parte de países desarrollados como Estados Unidos, Japón y Alemania, me pregunté cómo estábamos en Colombia en materia de invenciones. A pesar de la limitada inversión en Ciencia y tecnología (a penas un 0.4% del Producto Interno Bruto y cuya causa probablemente es la guerra), El suelo Colombiano ha visto nacer a numerosas invenciones que ahora son usadas a lo largo y ancho del planeta creadas tanto por compatriotas como por extranjeros radicados en el país. En este texto, destacaré los que para mí son las cinco mayores aportes a la ciencia y tecnología tanto a nivel nacional como internacional.<span id="more-260"></span></p>
<h3>5. Arcadio</h3>
<p>Arcadio es un robot desarrollado en la Universidad Javeriana el cual está diseñado para detectar artefactos explosivos bajo tierra y desactivarlos. Es manejado por un ser humano a través de un computador portátil a la distancia y posee un brazo computarizado inteligente. Está diseñado para ayudar en el proceso de limpieza de minas antipersonales en el territorio nacional sin poner en riesgo la vida de una persona.</p>
<h3>4. El cartucho de Seguridad</h3>
<p>Con el fin de disminuir los índices de muertes y heridas a causa de disparos accidentales, el sargento primero Carlos Miguel Farías Malagón creó un cartucho de bala artificial hecho de plástico con una palanca en su cuerpo que sirve tanto para evitar disparos accidentales así como para evidenciar la falta de cartucho real en el fusil. Desde 2009, su uso es obligatorio para soldados, suboficiales y oficiales del Ejército Nacional y la Policía Nacional de Colombia.</p>
<h3>3. Marcapasos</h3>
<p>Aunque ya la teoría existía para la época, el primer marcapasos intravenoso del mundo fue creado en 1958 por el ingeniero electrónico Colombiano Jorge Reynods. El marcapasos era realmente un aparato gigante que el paciente tenía que llevar consigo fuera de su cuerpo. Ahora estos artefactos del tamaño de una caja de fósforos, es usado por más de 48 millones de personas alrededor del mundo.</p>
<h3>2. Lasik</h3>
<p>En 1963, en la distinguida clínica Barraquer, el doctor José Ignacio Barraquer desarrolló un instrumento quirúrgico diseñado para cortar una diminuta capa de la cornea así como también un dispositivo capaz de congelar tejido de la misma con el fin de manipularlo para lograr diferentes niveles refractivos. Estas dos invenciones forman la base fundamental de lo que ahora se conoce como Lasik o cirugía refractiva.</p>
<h3>1. Válvula de Hakim</h3>
<p>Sin duda el mejor invento creado en Colombia y más reconocido a nivel mundial, se trata de un catéter anexado a una válvula ( de ahi el nombre) que se utiliza para drenar el líquido adicional en pacientes con hidrocefálea. Su inventor, el respetado doctor barranquillero Salomón Hakim quien lamentablemente falleció hace tan sólo un par de meses, dedicó toda su vida a estudiar las complejidades del cerebro.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ivanbustos.com/varios/los-5-mejores-inventos-colombianos/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>El futuro brillante del Nintendo 3DS</title>
		<link>http://www.ivanbustos.com/videojuegos/futuro-del-nintendo-3ds/</link>
		<comments>http://www.ivanbustos.com/videojuegos/futuro-del-nintendo-3ds/#comments</comments>
		<pubDate>Fri, 17 Jun 2011 19:48:12 +0000</pubDate>
		<dc:creator>Iván Bustos</dc:creator>
				<category><![CDATA[videojuegos]]></category>

		<guid isPermaLink="false">http://www.ivanbustos.com/?p=238</guid>
		<description><![CDATA[A pesar de su mal inicio y su escasez de software , estoy seguro de que lo mejor está por venir para la consola portátil de Nintendo.]]></description>
			<content:encoded><![CDATA[<p>Todos hemos sido testigos de un muy mal comienzo para la última consola portátil de Nintendo. Esto probablemente se debe  no sólo al elevadísimo precio actual del sistema si no también a la falta de video juegos y servicios disponibles en el lanzamiento. Ahora con el anuncio oficial durante el E3 del Playstation Vita por el mismo precio que el 3DS es lógico pensar que siguiendo las cosas como están, que la consola de Nintendo no tiene absolutamente ninguna posibilidad de competir contra la nave de Sony. Sin embargo, estoy convencido de que lo mejor del Nintendo 3DS estará por llegar durante este y el próximo año, lo que le dará a la apuesta de Nintendo una inmensa ventaja sobre su competencia.<span id="more-238"></span></p>
<p><img src="http://www.ivanbustos.com/wp-content/uploads/2011/06/3ds.jpg" alt="Nintendo 3ds" /></p>
<p>Para empezar, observemos las posibilidades de la consola en el campo del 3D que recordemos no es posible con el Playstation Vita. Nintendo ha anunciado un servicio donde se podrán descargar cortos y previos de películas y videos completamente en 3D. En adición, también firmó un contrato para llevar todo el catálogo virtual de Netflix a la consola. No sé ustedes, pero yo me muero por ver cortos de películas en full 3D un sábado por la noche sin nada qué hacer.</p>
<p>También véamos el precio actual de la consola. Aunque admito que actualmente el precio  de US $250 está por las nubes y me parece un descaro, estoy seguro que un recorte al precio está por venir. Según un estimado de costos destacado por la revista IEEE Spectrum, volumen 48 número 6, a Nintendo le cuesta fabricar cada Nintendo 3DS un aproximado de US $103.25 que se compondría de la siguiente manera:</p>
<table border="1" callspacing="0" cellpadding="0">
<caption>Estimado de costos en la manufacturación del Nintendo 3DS</caption>
<tfoot>
<tr>
<th>Total</th>
<td>US $103.25</td>
</tr>
<tr>
<th>Costo actual del 3DS</th>
<td>US $250.00</td>
</tr>
</tfoot>
<tbody>
<tr>
<th>Cámaras</th>
<td>US $7.70</td>
</tr>
<tr>
<th>Giroscopio, parlantes, acelerómetro</th>
<td>US $6.81</td>
</tr>
<tr>
<th>Pantalla 3D, Pantalla 2D Sensible</th>
<td>US $33.80</td>
</tr>
<tr>
<th>WiFi</th>
<td>US $5.00</td>
</tr>
<tr>
<th>Procesadores, placa madre y componentes</th>
<td>US $18.98</td>
</tr>
<tr>
<th>Batería, circuito impreso y componentes electromecánicos</th>
<td>US $7.13</td>
</tr>
<tr>
<th>Cargador, cables y contenido de la caja</th>
<td>US $3.48</td>
</tr>
<tr>
<th>Costo de manufactura</th>
<td>US $2.54</td>
</tr>
</tbody>
</table>
<p>Haz clic aquí para ver <a href="http://www.ivanbustos.com/wp-content/uploads/2011/06/3dsScan.jpg" title="Clic aquí para ver el documento">una copia del documento original</a></p>
<p>Mi apuesta es que la razón por la cual Nintendo lanzó el 3DS por la elevadísima suma de US $250 fue únicamente para palpar el terreno para analizar la respuesta de los consumidores mientras al mismo tiempo esperaban el anuncio oficial del precio del Playstation Vita (que casualmente tendrá el mismo precio). Ya que al mismo precio el Nintendo 3DS no puede esperar competir con el Playstation Vita, hay razones para pensar que Nintendo para las fechas del lanzamiento de la consola de Sony, podrá rebajar el precio del Nintendo 3DS considerablemente para seducir al público. Personalmente, yo creo que el precio del 3DS para esos días, estaría en los $189.99, una reducción considerable a la cual yo me apuntaría en un santiamén.</p>
<p>Por último pero no menos importante son los juegos. En la semana anterior durante la conferencia del E3, Nintendo anunció la llegada de títulos como Tekken, Luigi&#8217;s Mansion 2, Super Smash Bros 3DS, Kid Icarus: Uprising, Resident Evil: Revelations, Metal Gear Solid: Snake Eater 3D, Mario Kart, Donkey Kong 3D y el que será sin duda mi favorito personal&#8230; Super Mario 3DS. Con estos y muchos más por venir durante el final del 2011 y el comienzo del 2012 es seguro decir que Nintendo viene con toda su fuerza a conservar el puesto que mantiene como líder en el mercado de consolas portátiles.</p>
<p>En conclusión, a pesar de que el Playstation Vita es años luz técnicamente más poderoso que el Nintendo 3DS, creo haber demostrado que Nintendo tiene los recursos, el 3D y los juegos para aplastar a Sony y dominar la guerra de las consolas portátiles que se nos avecina. Como decimos en Colombia, amanecerá y veremos.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ivanbustos.com/videojuegos/futuro-del-nintendo-3ds/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Estilocss.com</title>
		<link>http://www.ivanbustos.com/soluciones/estilocss-com/</link>
		<comments>http://www.ivanbustos.com/soluciones/estilocss-com/#comments</comments>
		<pubDate>Mon, 16 May 2011 18:34:55 +0000</pubDate>
		<dc:creator>Iván Bustos</dc:creator>
				<category><![CDATA[soluciones]]></category>

		<guid isPermaLink="false">http://www.ivanbustos.com/?p=223</guid>
		<description><![CDATA[EstiloCSS.com no sólo incorporará en el futuro mis propios tutoriales web sino también de los mejores desarrolladores en Latinoamérica.]]></description>
			<content:encoded><![CDATA[<div class="solutionIntroduction">
<div class="solutionIntroVideo">
    <img src="http://www.ivanbustos.com/wp-content/uploads/2011/05/estiloCSSbig.jpg" alt="EstiloCSS.com" />
    </div>
<h3>EstiloCSS.com es un joven portal web cuya misión es convertirse en el primer destino para desarrolladores en Latinoamérica buscando recursos y tutoriales sobre diferentes tecnologías web.</h3>
<p><a href="http://www.estilocss.com/" title="Haga clic aquí para visitar el sitio oficial de esta solución">Visitar <span>Sitio Web</span></a></p>
</div>
<div class="solutionDescription">
<div class="solutionScreenShots">
<div class="solutionScreenShot">
         <img src="http://www.ivanbustos.com/wp-content/uploads/2011/05/tutorial.jpg" alt="tutorial estilocss.com" /></p>
<p>Los tutoriales son mostrados en una forma fácil de leer.</p>
</p></div>
</p></div>
<h2>El problema</h2>
<p>EstiloCSS.com mantiene una selección de tutoriales web bien escritos en español. Si bien es cierto el sitio tan sólo está empezando por ahora, he recibido una inmensa respuesta positiva de la comunidad de desarrolladores y diseñadores en Latinoamérica.</p>
<p>EstiloCSS.com es un proyecto personal. La verdad siempre quise crear una comunidad de desarrolladores y diseñadores en Colombia con el fin de compartir experiencias y conocimientos. Para el sitio web tengo grandes proyectos. Lo que está ahora en línea realmente no representa ni la punta del Iceberg. Quiero con el tiempo integrar una especie de foro para que la comunidad pueda ayudar a cualquier visitante que llegue al sitio web con alguna duda.</p>
<p>También quiero agregar mucha más funcionalidad al sitio web, incluyendo pero no limitado a la búsqueda por autores, integración real con la API de Twitter y Facebook entre otras muchas cosas. También es mi deseo habilitar el ingreso al sistema de gestión para que cientos de expertos a lo largo y ancho del país compartan sus experiencias.</p>
<h2>La solución</h2>
<p>EstiloCSS.com está completamente desarrollado en el Joomla! 1.6 Framework. El sitio hace uso de conceptos avanzados de Joomla! tales  y como ajustes de plantilla y diagramación, plugins personalizados así como la creación de campos personalizados para meta-información.</p>
<p>Lo que realmente es interesante es  lo fácil que resulta personalizar y extender Joomla! al gusto de uno literalmente logrando que las posibilidades sean infinitas. Para este proyecto, era necesario crear un sistema de comentarios adicional que pudiera integrarse sin problemas con Joomla!. En adición, también modifiqué el sistema de calificación de artículos para hacerlo ver un poco más interesante.</p>
<p>Cabe recalcar que el sitio no hace uso de ningún otro framework (nisiquiera jQuery) con el fin de maximizar la rapidez con la que la aplicación  se ejecuta. El sitio únicamente usa una pequeña librería que yo creé para validad formularios en español que está disponible completamente gratis en este, mi sitio web personal. También resulta interesante el hecho de que yo mismo creé el sistema de resaltado de sintaxis para mostrar código en los tutoriales.</p>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.ivanbustos.com/soluciones/estilocss-com/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Los mejores sitios web en Colombia</title>
		<link>http://www.ivanbustos.com/varios/los-mejores-sitios-web-en-colombia/</link>
		<comments>http://www.ivanbustos.com/varios/los-mejores-sitios-web-en-colombia/#comments</comments>
		<pubDate>Mon, 14 Feb 2011 18:24:16 +0000</pubDate>
		<dc:creator>Iván Bustos</dc:creator>
				<category><![CDATA[varios]]></category>

		<guid isPermaLink="false">http://www.ivanbustos.com/?p=148</guid>
		<description><![CDATA[Discuto sobre los que a mi parecer conforman los 5 mejores sitios web en Colombia. ¿No está de acuerdo con mi lista? ¡discutámoslo!]]></description>
			<content:encoded><![CDATA[<p>Debido a su importancia y su gran poder para influir en las tendencias del <strong>desarrollo web en Colombia</strong>, he decido hacer una lista donde destaco las que a mi parecer son los mejores <strong>sitios web en Colombia</strong>. </p>
<h3>5. <a href="http://www.asinosehace.com" title="Haga clic aquí para accesar a este sitio web">Asinosehace.com</a></h3>
<p><img src="http://www.ivanbustos.com/wp-content/uploads/2011/02/asinosehace.jpg" alt="Asi no se hace" /></p>
<p>A pesar de lo joven que es el sitio web, es un proyecto que siempre pensé en hacer pero que nunca puse en marcha. Se trata de un sitio web donde la gente critica la usabilidad de otros sitios web en Colombia. Aunque la idea es sencilla, su potencial es inmenso. ¿Por qué uno de los mejores sitios web?, es simple; por que promueve lo más importante en el mundo del <strong>desarrollo web</strong>, la usabilidad. Estoy seguro que si asinosehace.com recibe el apoyo que merece de parte de la comunidad de <strong>desarrolladores web en Colombia</strong>, se podrá incentivar y promover la creación de sitios web simples y fáciles de usar mientras que al mismo tiempo los criticados toman medidas para hacer las correcciones pertinentes en sus sitios web.</p>
<p><span id="more-148"></span></p>
<h3>4. <a href="http://www.paginasamarillas.com" title="Haga clic aquí para accesar a este sitio web">paginasamarillas.com</a></h3>
<p><img src="http://www.ivanbustos.com/wp-content/uploads/2011/02/paginasamarillas.jpg" alt="Paginas amarillas" /></p>
<p>Gracias a su nueva integración con Google Maps, este sitio web podría cambiar para siempre la manera en que los Colombianos buscamos direcciones e información acerca de compañías. Lamentablemente la interfaz es la misma si uno ingresa desde su teléfono móvil lo cual me parece decepcionante ya que la información del sitio podría ser muy útil para usuarios en las calles. De todas formas, paginasamarillas.com debido a su gran utilidad y  facilidad de uso, es uno de mis <strong>sitios web colombianos</strong> favoritos.</p>
<h3>3. <a href="http://www.exito.com" title="Haga clic aquí para accesar a este sitio web">exito.com</a></h3>
<p><img src="http://www.ivanbustos.com/wp-content/uploads/2011/02/exito.jpg" alt="Exito.com" /></p>
<p>El sitio web recientemente renovado de éxito.com es un milagro para Colombia. Es sin duda alguna el inicio del comercio electrónico que tanta falta nos hacía. ¿Qué significa esto para los <strong>desarrolladores web en Colombia</strong>? Por fin podremos decirles a nuestros clientes lo importante que es una tienda en línea. ¿Si Éxito lo hace, por qué no ellos?</p>
<h3>2. <a href="http://www.elespectador.com" title="Haga clic aquí para accesar a este sitio web">elespectador.com</a></h3>
<p><img src="http://www.ivanbustos.com/wp-content/uploads/2011/02/elespectador.jpg" alt="El espectador" /></p>
<p>Para leer noticias en línea, yo soy de los que prefiere mil veces el Espectador. Su página web es mil veces mucho más fácil de usar y puedo llegar a la información que busco en menos tiempo. En adición, el equipo editor demuestra un mayor profesionalismo en comparación al equipo de El Tiempo ampliando las noticias de interés, limitando errores ortográficos y de redacción así como  evitando artículos esotéricos, sexuales y amarillistas. Sin embargo, aún no estoy de acuerdo con la idea de habilitar comentarios en sitios web de periódicos cual si fuera un blog.</p>
<h3>1. <a href="http://www.gobiernoenlinea.gov.co" title="Haga clic aquí para accesar a este sitio web">gobiernoenlinea.gov.co</a></h3>
<p><img src="http://www.ivanbustos.com/wp-content/uploads/2011/02/gobiernoenlinea.jpg" alt="Gobierno en Línea" /></p>
<p>Uno de los grandes aportes de la administración anterior y sin duda alguna el <strong>mejor sitio web en Colombia</strong>, Gobierno en línea nos ha convertido en líder de trámites en línea en América Latina y el Caribe donde actualmente se pueden efectuar más de 600 trámites y servicios desde la comodidad del hogar.</p>
<p>¿Está de acuerdo con esta lista? ¿Cuál es su lista personal? Me gustaría mucho conocerla. Le invito a que responda usando el formulario que aparece al hacer clic en el botón Agregar comentario a continuación.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ivanbustos.com/varios/los-mejores-sitios-web-en-colombia/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Validación de formularios con IBForm</title>
		<link>http://www.ivanbustos.com/desarrollo-web/validacion-de-formularios-facil/</link>
		<comments>http://www.ivanbustos.com/desarrollo-web/validacion-de-formularios-facil/#comments</comments>
		<pubDate>Fri, 07 Jan 2011 06:48:30 +0000</pubDate>
		<dc:creator>Iván Bustos</dc:creator>
				<category><![CDATA[Desarrollo Web]]></category>

		<guid isPermaLink="false">http://www.ivanbustos.com/?p=135</guid>
		<description><![CDATA[Publico por primera vez mi propio script para validar formularios. Un script fácil de usar y liviano y lo mejor de todo, en español.]]></description>
			<content:encoded><![CDATA[<p>La verdad de las cosas que más me incomodan en el mundo del desarrollo web es sin duda alguna lidiar con la validación de formularios. Es un simple gaje de este oficio que me encanta.<br />
En mi carrera como desarrollador web en Colombia, debo admitir que nunca he sido muy bueno con el diseño de formularios. Para ser honesto siempre me quedaban como feos y no entendía cómo era posible crear formularios bonitos sin hacer uso de tablas. <span id="more-135"></span>Con el paso del tiempo y a medida que mi experiencia con el CSS iba mejorando, empecé a crear formularios poco a poco con los trucos que había aprendido navegando por la Web. Al principio me quedaban regular. Las cajas de texto por ejempo, simplemente no alineaban con las otras o si quería agregar otra caja de texto en otro lugar, me tocaba modificar una gran cantidad de código. Con el paso del tiempo y a medida que mi experiencia aumentaba (estamos hablando de hace aproximadamente cuatro años) me forcé a mi mismo a crear bocetos de los formularios antes de desarrollarlos. Eso ha mejorado mi manera de trabajar de una manera crítica y se lo recomiendo a usted, amigo lector a que si no lo acostumbra hacer que empiece a hacerlo desde ahora. Esto facilita enormemente con simples medidas matemáticas y a través de CSS la creación de hasta los formularios más complejos.<br />
<img src="http://www.ivanbustos.com/wp-content/uploads/2011/01/form.jpg" alt="maquetación de formularios" /><br />
Para continuar mi batalla hacia la perfección (conste que no digo que ya llegué a la meta) faltaba otra cosa por hacer, otro enemigo qué vencer. Por supuesto, la validación de formularios. Validar un campo no es para nada fácil y quiero aclarar que no hablaré de la prevención de ataques de inyección por que eso es otra cosa que simplemente no va (a mi modo de ver las cosas) con el tema. Yo toda la vida me dediqué a validar formularios de la manera fácil y mediocre. Simplemente si el campo a llenar no estaba vacío, lo dejaba pasar. Caso contrario mostraba un mensaje de error indicándole al interesado que corrija el tema.<br />
Gracias a todo lo que he aprendido con XML Schema y XML en general así como con la normalización de base de datos, uso de colaciones y mercadeo en internet, me he dado cuenta que la información que nos da nuestro visitante es extremadamente valiosa y es nuestro deber como programadores saber organizar esta información de la mejor manera posible.<br />
Es por eso que he decidido crear el primer <a href="http://www.ivanbustos.com/laboratorio/validacion-de-formularios/" title="validación de formularios">script para validar formularios</a> en español optimizado para usuarios Colombianos. IBForm, un pequeño y liviano script, cumple a cabalidad todos mis requerimientos personales a la hora de validar formularios sencillos o complejos. Les invito a que aprendan un poco más del mismo y que lo usen cuando puedan. Es completamente gratis y también fácil de usar. En el sitio explico cómo paso a paso.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ivanbustos.com/desarrollo-web/validacion-de-formularios-facil/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>IBForm</title>
		<link>http://www.ivanbustos.com/laboratorio/validacion-de-formularios/</link>
		<comments>http://www.ivanbustos.com/laboratorio/validacion-de-formularios/#comments</comments>
		<pubDate>Mon, 03 Jan 2011 02:18:38 +0000</pubDate>
		<dc:creator>Iván Bustos</dc:creator>
				<category><![CDATA[laboratorio]]></category>

		<guid isPermaLink="false">http://www.ivanbustos.com/?p=120</guid>
		<description><![CDATA[El mejor Script para validar formularios disponible en Español. Usted podrá validar todo tipo de formulario de una manera extremadamente simple y fácil.]]></description>
			<content:encoded><![CDATA[<div class="solutionIntroduction application">
<div class="solutionIntroVideo">
                <iframe src="http://player.vimeo.com/video/18351735" width="600" height="350" frameborder="0"></iframe>
                </div>
<h3>Un liviano javascript que valida formularios en línea de una nueva manera mucho más fácil y extensible sin la necesidad de librerías adicionales como jQuery. Puede ver un ejemplo terminado haciendo clic <a href="http://www.ivanbustos.com/ibutils/ibform/index.htm" title="Haga clic aquí para ver el ejemplo">aquí.</a></h3>
<p><a href="http://www.ivanbustos.com/ibutils/ibform/IBForm-0.09.min.js.zip" title="Haga clic aquí para visitar el sitio oficial de esta solución">Descargar IBForm v0.09</a></p>
</div>
<div class="solutionDescription">
<h2 id="menuContenido">Contenido</h2>
<ol>
<li><a href="#problema" title="Haga clic aquí para leer esta sección">El Problema</a></li>
<li><a href="#caracteristicas" title="Haga clic aquí para leer esta sección">Características</a></li>
<li><a href="#pasoapaso" title="Haga clic aquí para leer esta sección">Validación básica paso a paso</a></li>
<li><a href="#efectos" title="Haga clic aquí para leer esta sección">Creando mensajes de error más específicos junto con efectos visuales</a></li>
<li><a href="#nombres" title="Haga clic aquí para leer esta sección">Nombres preestablecidos de IBForm</a></li>
<li><a href="#campos" title="Haga clic aquí para leer esta sección">Agregando campos personalizados</a></li>
</ol>
<h2 id="problema">El problema</h2>
<p>Admitámoslo colegas, lidiar con la validación de formularios es una maldición. Por lo menos para mí cuando alguien menciona la palabra formulario siempre pienso en el proceso casi interminable y totalmente fastidioso que implica crear el boceto del formulario, la maquetación en HTML, el diseño en CSS, la validación en javascript, el procesamiento con el lenguaje del servidor y el almacenamiento en una base de datos. Sin duda, la parte más aburrida y más larga del tema es la validación con Javascript. ¡Qué aburrido!</p>
<p>Algunos dirán, pero Iván,  si ya hay varios scripts que validan formularios que hacen la vida más fácil. Debo admitir que he probado muchos pero la verdad la mayoría no me gustan debido principalmente a las siguientes razones:</p>
<ol>
<li>Dependencia de librerías externas (como jQuery).</li>
<li>Están creados en inglés.</li>
<li>La validación está creada con campos anglosajones en mente. Como códigos zip, fechas, nombres, diferentes a los nuestros.</li>
<li>Validar un formulario llenado por un colombiano  con uno de estos remedios resulta peor que la enfermedad.</li>
<li>Capacidad limitada de validación y la más importante,</li>
<li>son entrometidos. Automáticamente alteran gráficamente el formulario para indicar campos con errores y generalmente no hay mucha libertad sobre cómo mostrar ese resultado.</li>
</ol>
<p>Por estas razones, decidí crear mi propio validador de formularios del cual hablaré en la siguiente sección.</p>
<h2>La solución</h2>
<p>Presento el primer  y más completo sistema integrado de validación de formularios en español optimizado para usuarios Colombianos.  IBForm es increíblemente sencillo de usar (asumiendo que usted tiene nociones básicas de JavaScript) y lo mejor de todo es que no obstruye su trabajo. Usted como desarrollador tendrá toda la libertad de mostrar el resultado de la validación como desee. Si quiere puede mostrar sólo un &#8220;alert&#8221; indicándole al visitante los errores cometidos o si desea también puede crear los mejores efectos visuales que le lleguen a la mente. Las posibilidades son ilimitadas.</p>
<h2 id="caracteristicas">Características</h2>
<ol>
<li>El más completo sistema de validación disponible en español.</li>
<li>La manera absolutamente correcta de validar formularios. Asígnele un formulario a IBForm y este le dirá si el formulario es válido. Si no lo es, le retornará un array con el mensaje de error de cada campo así como su ubicación en el documento XML relativo al formulario lo que facilita tremendamente la generación de efectos visuales.</li>
<li>Contiene <a href="#nombres" title="Haga clic aquí para leer esta sección">campos preestablecidos</a>. Simplemente nombre los campos de su formulario acorde a la <a href="#nombres" title="Haga clic aquí para leer esta sección">lista</a> y listo.</li>
<li>Ligero, no más de 18KB.</li>
<li>No hace uso de librerías externas como JQuery. Ideal para los amantes del JavaScript puro.</li>
<li>Campos preestablecidos específicos para usuarios Colombianos.</li>
<li>Eficiente y rápido proceso de validación.</li>
<li>Facilita la población de campos de selección</li>
<li>Soporta infinitos formularios por página.</li>
<li>No es entrometido. No genera absolutamente ningún efecto gráfico dándole la libertad a usted para validar el formulario a su gusto.</li>
</ol>
<h2>Limitaciones</h2>
<ol>
<li>IBForm aún no soporta campos de selección múltiple ni botones radio.</li>
</ol>
<h2>Compatibilidad</h2>
<p>Se ha comprobado que IBForm funciona correctamente en cualquier navegador común.</p>
<h2 id="pasoapaso">Validación básica paso a paso</h2>
<p><a href="#menuContenido" title="Haga clic aquí para leer esta sección">Ir al contenido</a></p>
<p>Supongamos que tenemos el siguiente documento XHTML. En él se encuentra un simple formulario de contacto. Note que el campo de selección departamento no tiene actualmente ninguna opción.</p>
<div class="codeBox html">
<ol>
<li>&lt;!DOCTYPE html PUBLIC &quot;-//W3C//DTD XHTML 1.1//EN&quot; &quot;http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd&quot;&gt;</li>
<li>&lt;html xmlns=&quot;http://www.w3.org/1999/xhtml&quot;&gt;</li>
<li>&nbsp;&nbsp;&lt;head&gt;</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;&lt;meta http-equiv=&quot;Content-Type&quot; content=&quot;text/html; charset=utf-8&quot; /&gt;</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;&lt;title&gt;Demostración de IBForm&lt;/title&gt;&lt;/head&gt;</li>
<li>&nbsp;&nbsp;&lt;body&gt;</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;&lt;h1&gt;Formulario experimental: Direcciones en formato estándar&lt;/h1&gt;</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;&lt;form action=&quot;#&quot; method=&quot;post&quot;&gt;</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;p&gt;&lt;label for=&quot;nombre&quot;&gt;Ingrese su nombre:&lt;/label&gt;&lt;input type=&quot;text&quot; name=&quot;nombre&quot; id=&quot;nombre&quot;/&gt;&lt;/p&gt;</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;p&gt;&lt;label for=&quot;correo&quot;&gt;Ingrese su correo:&lt;/label&gt;&lt;input type=&quot;text&quot; name=&quot;correo&quot; id=&quot;correo&quot;/&gt;&lt;/p&gt;</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;p&gt;&lt;label for=&quot;departamento&quot;&gt;Seleccione departamento:&lt;/label&gt;&lt;select name=&quot;departamento&quot; id=&quot;departamento&quot;&gt;&lt;/select&gt;&lt;/p&gt;</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;p&gt;&lt;label for=&quot;comentario&quot;&gt;Ingrese su comentario:&lt;/label&gt;&lt;/p&gt;</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;p&gt;&lt;textarea rows=&quot;5&quot; cols=&quot;30&quot; name=&quot;comentario&quot; id=&quot;comentario&quot;&gt;&lt;/textarea&gt;&lt;/p&gt;</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;p&gt;&lt;input class=&quot;button&quot; type=&quot;submit&quot; value=&quot;Enviar&quot; /&gt;&lt;/p&gt;</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;&lt;/form&gt;</li>
<li>&nbsp;&nbsp;&lt;/body&gt;</li>
<li>&lt;/html&gt;</li>
</ol>
</div>
<p>Antes que nada, debemos cambiar los nombres de nuestros campos en el formulario por alguno de los nombres preestablecidos de IBForm. El formulario quedaría de esta forma:</p>
<div class="codeBox html">
<ol>
<li>&lt;!DOCTYPE html PUBLIC &quot;-//W3C//DTD XHTML 1.1//EN&quot; &quot;http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd&quot;&gt;</li>
<li>&lt;html xmlns=&quot;http://www.w3.org/1999/xhtml&quot;&gt;</li>
<li>&nbsp;&nbsp;&lt;head&gt;</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;&lt;meta http-equiv=&quot;Content-Type&quot; content=&quot;text/html; charset=utf-8&quot; /&gt;</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;&lt;title&gt;Demostración de IBForm&lt;/title&gt;&lt;/head&gt;</li>
<li>&nbsp;&nbsp;&lt;body&gt;</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;&lt;h1&gt;Formulario experimental: Direcciones en formato estándar&lt;/h1&gt;</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;&lt;form action=&quot;#&quot; method=&quot;post&quot;&gt;</li>
<li class="focus">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;p&gt;&lt;label for=&quot;interesado_pNombre_pApellido&quot;&gt;Ingrese su nombre:&lt;/label&gt;&lt;input type=&quot;text&quot; name=&quot;interesado_pNombre_pApellido&quot; id=&quot;interesado_pNombre_pApellido&quot;/&gt;&lt;/p&gt;</li>
<li class="focus">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;p&gt;&lt;label for=&quot;interesado_correoElectronico&quot;&gt;Ingrese su correo:&lt;/label&gt;&lt;input type=&quot;text&quot; name=&quot;interesado_correoElectronico&quot; id=&quot;interesado_correoElectronico&quot;/&gt;&lt;/p&gt;</li>
<li class="focus">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;p&gt;&lt;label for=&quot;casa_departamento&quot;&gt;Seleccione departamento:&lt;/label&gt;&lt;select name=&quot;casa_departamento&quot; id=&quot;casa_departamento&quot;&gt;&lt;/select&gt;&lt;/p&gt;</li>
<li class="focus">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;p&gt;&lt;label for=&quot;interesado_comentario&quot;&gt;Ingrese su comentario:&lt;/label&gt;&lt;/p&gt;</li>
<li class="focus">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;p&gt;&lt;textarea rows=&quot;5&quot; cols=&quot;30&quot; name=&quot;interesado_comentario&quot; id=&quot;interesado_comentario&quot;&gt;&lt;/textarea&gt;&lt;/p&gt;</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;p&gt;&lt;input class=&quot;button&quot; type=&quot;submit&quot; value=&quot;Enviar&quot; /&gt;&lt;/p&gt;</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;&lt;/form&gt;</li>
<li>&nbsp;&nbsp;&lt;/body&gt;</li>
<li>&lt;/html&gt;</li>
</ol>
</div>
<p>Ahora, incluyamos el IBForm en el &lt;head&gt;:</p>
<div class="codeBox html">
<ol>
<li>&lt;!DOCTYPE html PUBLIC &quot;-//W3C//DTD XHTML 1.1//EN&quot; &quot;http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd&quot;&gt;</li>
<li>&lt;html xmlns=&quot;http://www.w3.org/1999/xhtml&quot;&gt;</li>
<li>&nbsp;&nbsp;&lt;head&gt;</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;&lt;meta http-equiv=&quot;Content-Type&quot; content=&quot;text/html; charset=utf-8&quot; /&gt;</li>
<li class="focus">&nbsp;&nbsp;&nbsp;&nbsp;&lt;script type=&quot;text/javascript&quot; defer=&quot;defer&quot; src=&quot;IBForm-0.07.min.js&quot;&gt;&lt;/script&gt;</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;&lt;title&gt;Demostración de IBForm&lt;/title&gt;&lt;/head&gt;</li>
<li>&nbsp;&nbsp;&lt;body&gt;</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;&lt;h1&gt;Formulario experimental: Direcciones en formato estándar&lt;/h1&gt;</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;&lt;form action=&quot;#&quot; method=&quot;post&quot;&gt;</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;p&gt;&lt;label for=&quot;interesado_pNombre_pApellido&quot;&gt;Ingrese su nombre:&lt;/label&gt;&lt;input type=&quot;text&quot; name=&quot;interesado_pNombre_pApellido&quot; id=&quot;interesado_pNombre_pApellido&quot;/&gt;&lt;/p&gt;</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;p&gt;&lt;label for=&quot;interesado_correoElectronico&quot;&gt;Ingrese su correo:&lt;/label&gt;&lt;input type=&quot;text&quot; name=&quot;interesado_correoElectronico&quot; id=&quot;interesado_correoElectronico&quot;/&gt;&lt;/p&gt;</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;p&gt;&lt;label for=&quot;casa_departamento&quot;&gt;Seleccione departamento:&lt;/label&gt;&lt;select name=&quot;casa_departamento&quot; id=&quot;casa_departamento&quot;&gt;&lt;/select&gt;&lt;/p&gt;</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;p&gt;&lt;label for=&quot;interesado_comentario&quot;&gt;Ingrese su comentario:&lt;/label&gt;&lt;/p&gt;</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;p&gt;&lt;textarea rows=&quot;5&quot; cols=&quot;30&quot; name=&quot;interesado_comentario&quot; id=&quot;interesado_comentario&quot;&gt;&lt;/textarea&gt;&lt;/p&gt;</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;p&gt;&lt;input class=&quot;button&quot; type=&quot;submit&quot; value=&quot;Enviar&quot; /&gt;&lt;/p&gt;</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;&lt;/form&gt;</li>
<li>&nbsp;&nbsp;&lt;/body&gt;</li>
<li>&lt;/html&gt;</li>
</ol>
</div>
<p>También incluyamos otro archivo .js donde pondremos las instrucciones que le daremos a nuestro IBForm. En este ejemplo, lo llamé validacion.js</p>
<div class="codeBox html">
<ol>
<li>&lt;!DOCTYPE html PUBLIC &quot;-//W3C//DTD XHTML 1.1//EN&quot; &quot;http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd&quot;&gt;</li>
<li>&lt;html xmlns=&quot;http://www.w3.org/1999/xhtml&quot;&gt;</li>
<li>&nbsp;&nbsp;&lt;head&gt;</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;&lt;meta http-equiv=&quot;Content-Type&quot; content=&quot;text/html; charset=utf-8&quot; /&gt;</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;&lt;script type=&quot;text/javascript&quot; defer=&quot;defer&quot; src=&quot;IBForm-0.07.min.js&quot;&gt;&lt;/script&gt;</li>
<li class="focus">&nbsp;&nbsp;&nbsp;&nbsp;&lt;script type=&quot;text/javascript&quot; defer=&quot;defer&quot; src=&quot;validacion.js&quot;&gt;&lt;/script&gt;</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;&lt;title&gt;Demostración de IBForm&lt;/title&gt;&lt;/head&gt;</li>
<li>&nbsp;&nbsp;&lt;body&gt;</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;&lt;h1&gt;Formulario experimental: Direcciones en formato estándar&lt;/h1&gt;</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;&lt;form action=&quot;#&quot; method=&quot;post&quot;&gt;</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;p&gt;&lt;label for=&quot;interesado_pNombre_pApellido&quot;&gt;Ingrese su nombre:&lt;/label&gt;&lt;input type=&quot;text&quot; name=&quot;interesado_pNombre_pApellido&quot; id=&quot;interesado_pNombre_pApellido&quot;/&gt;&lt;/p&gt;</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;p&gt;&lt;label for=&quot;interesado_correoElectronico&quot;&gt;Ingrese su correo:&lt;/label&gt;&lt;input type=&quot;text&quot; name=&quot;interesado_correoElectronico&quot; id=&quot;interesado_correoElectronico&quot;/&gt;&lt;/p&gt;</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;p&gt;&lt;label for=&quot;casa_departamento&quot;&gt;Seleccione departamento:&lt;/label&gt;&lt;select name=&quot;casa_departamento&quot; id=&quot;casa_departamento&quot;&gt;&lt;/select&gt;&lt;/p&gt;</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;p&gt;&lt;label for=&quot;interesado_comentario&quot;&gt;Ingrese su comentario:&lt;/label&gt;&lt;/p&gt;</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;p&gt;&lt;textarea rows=&quot;5&quot; cols=&quot;30&quot; name=&quot;interesado_comentario&quot; id=&quot;interesado_comentario&quot;&gt;&lt;/textarea&gt;&lt;/p&gt;</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;p&gt;&lt;input class=&quot;button&quot; type=&quot;submit&quot; value=&quot;Enviar&quot; /&gt;&lt;/p&gt;</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;&lt;/form&gt;</li>
<li>&nbsp;&nbsp;&lt;/body&gt;</li>
<li>&lt;/html&gt;</li>
</ol>
</div>
<p>Abramos nuestro archivo validacion.js  y en él crearemos una función y se la asignaremos al evento onload de nuestro objeto window.</p>
<div class="codeBox javascript">
<ol>
<li>window.onload = </li>
<li>&nbsp;&nbsp;function()</li>
<li>&nbsp;&nbsp;{</li>
<li>&nbsp;&nbsp;};</li>
</ol>
</div>
<p>Esa función correrá siempre que abra nuestra página con el formulario. Dentro de esta nueva función, de la misma manera asignémosle una función al evento onsubmit de nuestro formulario.</p>
<div class="codeBox javascript">
<ol>
<li>window.onload = </li>
<li>&nbsp;&nbsp;function()</li>
<li>&nbsp;&nbsp;{</li>
<li class="focus">&nbsp;&nbsp;&nbsp;&nbsp;window.document.forms[0].onsubmit =</li>
<li class="focus">&nbsp;&nbsp;&nbsp;&nbsp;function()</li>
<li class="focus">&nbsp;&nbsp;&nbsp;&nbsp;{</li>
<li class="focus">&nbsp;&nbsp;&nbsp;&nbsp;};</li>
<li>&nbsp;&nbsp;};</li>
</ol>
</div>
<p>Ahora, antes que podamos validar nuestro formulario es importante cancelar el comportamiento por defecto del navegador el cual es enviar el formulario a POST. Si no lo hacemos, el formulario siempre se enviará antes de ser validado.</p>
<p>En un mundo ideal donde todos los navegadores se comportaran igual simplemente tendríamos que agregar un argumento a la última función que acabamos de crear y dentro de esta cancelar el evento por defecto, como lo sugiere el siguiente código:</p>
<div class="codeBox javascript">
<ol>
<li>window.onload = </li>
<li>&nbsp;&nbsp;function()</li>
<li>&nbsp;&nbsp;{</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;window.document.forms[0].onsubmit =</li>
<li class="focus">&nbsp;&nbsp;&nbsp;&nbsp;function(event)</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;{</li>
<li class="focus">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;event.preventDefault();</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;};</li>
<li>&nbsp;&nbsp;};</li>
</ol>
</div>
<p>Lamentablemente como no vivimos en un mundo ideal, gracias como siempre a Internet Explorer que no soporta <code>preventDefault</code>, debemos hacer eso un poquito más complicado a través de un simple verificador de navegador. La línea 7 del código anterior la cambiamos por:</p>
<div class="codeBox javascript">
<ol>
<li>var evt = event || window.event;</li>
<li>if (evt.preventDefault)</li>
<li>{&nbsp;&nbsp;</li>
<li>&nbsp;&nbsp;evt.preventDefault();&nbsp;&nbsp;</li>
<li>}</li>
<li>else</li>
<li>{&nbsp;&nbsp;</li>
<li>&nbsp;&nbsp;evt.returnValue = false;&nbsp;&nbsp;</li>
<li>&nbsp;&nbsp;evt.cancelBubble = true;&nbsp;&nbsp;</li>
<li>}</li>
</ol>
</div>
<p>Lo que nos proporcionaría:</p>
<div class="codeBox javascript">
<ol>
<li>window.onload = </li>
<li>&nbsp;&nbsp;function()</li>
<li>&nbsp;&nbsp;{</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;window.document.forms[0].onsubmit =</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;function(event)</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;{</li>
<li class="focus">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var evt = event || window.event;</li>
<li class="focus">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (evt.preventDefault)</li>
<li class="focus">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;</li>
<li class="focus">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;evt.preventDefault();&nbsp;&nbsp;</li>
<li class="focus">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</li>
<li class="focus">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else</li>
<li class="focus">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;</li>
<li class="focus">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;evt.returnValue = false;&nbsp;&nbsp;</li>
<li class="focus">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;evt.cancelBubble = true;&nbsp;&nbsp;</li>
<li class="focus">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;};</li>
<li>&nbsp;&nbsp;};</li>
</ol>
</div>
<p>Acabamos de hacer lo más complicado de todo el proceso que es simplemente prevenir el comportamiento por defecto en los distintos navegadores.</p>
<p>Crearemos ahora un objeto de clase IBForm al cual le asignaremos a su constructor nuestro formulario como parámetro (lo sé, no existen clases en JavaScript). Este procedimiento lo realizaremos inmediatamente antes de la función que acabamos de modificar. Al hacer esto, IBForm automáticamente poblará nuestra lista de selección de departamentos Colombianos.</p>
<div class="codeBox javascript">
<ol>
<li>window.onload = </li>
<li>&nbsp;&nbsp;function()</li>
<li>&nbsp;&nbsp;{</li>
<li class="focus">&nbsp;&nbsp;&nbsp;&nbsp;var miFormularioIBForm = new IBForm(window.document.forms[0]);</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;window.document.forms[0].onsubmit =</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;function(event)</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;{</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var evt = event || window.event;</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (evt.preventDefault)</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;evt.preventDefault();&nbsp;&nbsp;</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;evt.returnValue = false;&nbsp;&nbsp;</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;evt.cancelBubble = true;&nbsp;&nbsp;</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;};</li>
<li>&nbsp;&nbsp;};</li>
</ol>
</div>
<p>Crearemos ahora justo después de nuestró código que previene el evento por defecto de nuestro formulario un <em>array</em> donde almacenaremos todos los problemas que encuentre IBForm.</p>
<div class="codeBox javascript">
<ol>
<li>window.onload = </li>
<li>&nbsp;&nbsp;function()</li>
<li>&nbsp;&nbsp;{</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;var miFormularioIBForm = new IBForm(window.document.forms[0]);</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;window.document.forms[0].onsubmit =</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;function(event)</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;{</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var evt = event || window.event;</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (evt.preventDefault)</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;evt.preventDefault();&nbsp;&nbsp;</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;evt.returnValue = false;&nbsp;&nbsp;</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;evt.cancelBubble = true;&nbsp;&nbsp;</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</li>
<li class="focus">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var erroresEncontrados = new Array();</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;};</li>
<li>&nbsp;&nbsp;};</li>
</ol>
</div>
<p>Para poblar nuestro <em>array</em> recién creado, le asignaremos el valor de retorno del evento <code>validate()</code> del IBForm. </p>
<p>El evento <code>validate()</code> de nuestro formulario lo que hace es devolvernos un <em>array</em> de dos dimensiones con los errores encontrados en el momento de la validación de nuestro formulario.</p>
<p>Ahora sí, procedamos a darle vida a nuestro <em>array</em>:</p>
<div class="codeBox javascript">
<ol>
<li>window.onload = </li>
<li>&nbsp;&nbsp;function()</li>
<li>&nbsp;&nbsp;{</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;var miFormularioIBForm = new IBForm(window.document.forms[0]);</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;window.document.forms[0].onsubmit =</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;function(event)</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;{</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var evt = event || window.event;</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (evt.preventDefault)</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;evt.preventDefault();&nbsp;&nbsp;</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;evt.returnValue = false;&nbsp;&nbsp;</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;evt.cancelBubble = true;&nbsp;&nbsp;</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var erroresEncontrados = new Array();</li>
<li class="focus">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;erroresEncontrados = miFormularioIBForm.validate();</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;};</li>
<li>&nbsp;&nbsp;};</li>
</ol>
</div>
<p>Para mostrar un mensaje de error, tiene sentido que si el arreglo que acabamos de llenar está vacío querrá decir que no hubo ningún error en el proceso de validación y que el formulario es completamente válido. Podemos mostrar un mensaje adecuado con una simple condición:</p>
<div class="codeBox javascript">
<ol>
<li>window.onload = </li>
<li>&nbsp;&nbsp;function()</li>
<li>&nbsp;&nbsp;{</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;var miFormularioIBForm = new IBForm(window.document.forms[0]);</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;window.document.forms[0].onsubmit =</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;function(event)</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;{</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var evt = event || window.event;</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (evt.preventDefault)</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;evt.preventDefault();&nbsp;&nbsp;</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;evt.returnValue = false;&nbsp;&nbsp;</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;evt.cancelBubble = true;&nbsp;&nbsp;</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var erroresEncontrados = new Array();</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;erroresEncontrados = miFormularioIBForm.validate();</li>
<li class="focus">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(erroresEncontrados.length == 0)</li>
<li class="focus">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{</li>
<li class="focus">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;alert(&quot;El formulario es válido.&quot;);</li>
<li class="focus">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</li>
<li class="focus">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else</li>
<li class="focus">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{</li>
<li class="focus">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;alert(&quot;El formulario tiene errores.&quot;);</li>
<li class="focus">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;};</li>
<li>&nbsp;&nbsp;};</li>
<li>&nbsp;&nbsp;</li>
</ol>
</div>
<h2 id="efectos">Creando mensajes de error más específicos junto con efectos visuales</h2>
<p><a href="#menuContenido" title="Haga clic aquí para leer esta sección">Ir al contenido</a></p>
<p>El arreglo que devuelve el evento <code>validate()</code> de IBForm tiene la siguiente estructura:</p>
<p><code>arreglo[número_de_iteración][0]</code></p>
<p>Que devuelve la posición del elemento (número del nodo xml) con el problema relativa al formulario.</p>
<p><code>arreglo[número_de_iteración][1]</code></p>
<p>Que devuelve el mensaje de error por defecto en español.</p>
<p>Ahora lo que haremos es crear un mensaje mostrando un error más específico. Es decir, que no sólo diga &#8220;El formulario tiene errores &#8221; sino que muestre exactamente cuáles son los campos con errores de validación.</p>
<div class="codeBox javascript">
<ol>
<li>window.onload = </li>
<li>&nbsp;&nbsp;function()</li>
<li>&nbsp;&nbsp;{</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;var miFormularioIBForm = new IBForm(window.document.forms[0]);</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;window.document.forms[0].onsubmit =</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;function(event)</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;{</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var evt = event || window.event;</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (evt.preventDefault)</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;evt.preventDefault();&nbsp;&nbsp;</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;evt.returnValue = false;&nbsp;&nbsp;</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;evt.cancelBubble = true;&nbsp;&nbsp;</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var erroresEncontrados = new Array();</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;erroresEncontrados = miFormularioIBForm.validate();</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(erroresEncontrados.length == 0)</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;alert(&quot;El formulario es válido.&quot;);</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{</li>
<li class="focus">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var mensaje = &quot;Se han encontrado los siguientes errores: \n&quot;</li>
<li class="focus">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;alert(mensaje);</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;};</li>
<li>&nbsp;&nbsp;};</li>
</ol>
</div>
<p>Para lograr esto, es necesario crear un bucle para examinar cada iteración de nuestro formulario e ir llenando nuestro mensaje poco a poco con cada texto de error que está almacenado en nuestro arreglo.</p>
<div class="codeBox javascript">
<ol>
<li>window.onload = </li>
<li>&nbsp;&nbsp;function()</li>
<li>&nbsp;&nbsp;{</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;var miFormularioIBForm = new IBForm(window.document.forms[0]);</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;window.document.forms[0].onsubmit =</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;function(event)</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;{</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var evt = event || window.event;</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (evt.preventDefault)</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;evt.preventDefault();&nbsp;&nbsp;</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;evt.returnValue = false;&nbsp;&nbsp;</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;evt.cancelBubble = true;&nbsp;&nbsp;</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var erroresEncontrados = new Array();</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;erroresEncontrados = miFormularioIBForm.validate();</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(erroresEncontrados.length == 0)</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;alert(&quot;El formulario es válido.&quot;);</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var mensaje = &quot;Se han encontrado los siguientes errores: \n&quot;</li>
<li class="focus">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for (var aux=0; aux&lt;=erroresEncontrados.length &#8211; 1; aux++)</li>
<li class="focus">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{</li>
<li class="focus">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mensaje += erroresEncontrados[aux][1] + &quot;\n&quot;;</li>
<li class="focus">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;alert(mensaje);</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;};</li>
<li>&nbsp;&nbsp;};</li>
<li>&nbsp;&nbsp;</li>
</ol>
</div>
<p>Para agregar un simple efecto, podemos simplemente asignarle un borde rojo a cada uno de los campos con error en el momento de validación.</p>
<div class="codeBox javascript">
<ol>
<li>window.onload = </li>
<li>&nbsp;&nbsp;function()</li>
<li>&nbsp;&nbsp;{</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;var miFormularioIBForm = new IBForm(window.document.forms[0]);</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;window.document.forms[0].onsubmit =</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;function(event)</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;{</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var evt = event || window.event;</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (evt.preventDefault)</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;evt.preventDefault();&nbsp;&nbsp;</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;evt.returnValue = false;&nbsp;&nbsp;</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;evt.cancelBubble = true;&nbsp;&nbsp;</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var erroresEncontrados = new Array();</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;erroresEncontrados = miFormularioIBForm.validate();</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(erroresEncontrados.length == 0)</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;alert(&quot;El formulario es válido.&quot;);</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var mensaje = &quot;Se han encontrado los siguientes errores: \n&quot;</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for (var aux=0; aux&lt;=erroresEncontrados.length &#8211; 1; aux++)</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mensaje += erroresEncontrados[aux][1] + &quot;\n&quot;;</li>
<li class="focus">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;this.elements[erroresEncontrados[aux][0]].style.borderColor = &quot;#FF0000&quot;;</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;alert(mensaje);</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;};</li>
<li>&nbsp;&nbsp;};</li>
</ol>
</div>
<p>La posibilidad de crear efectos visuales es completamente ilimitada. Aquí pueden ver un ejemplo un poco más avanzado.</p>
<h2 id="nombres">Nombres preestablecidos de IBForm</h2>
<p><a href="#menuContenido" title="Haga clic aquí para leer esta sección">Ir al contenido</a></p>
<p>IBForm está preparado para validar la mayor parte de formularios. A continuación ud. verá un listado de los campos preestablecidos para facilitar el proceso de validación.</p>
<table cellspacing="0" cellpadding="0">
<caption>* La última columna define si IBForm trata el campo como requerido.</caption>
<thead>
<tr>
<th>Nombre del campo</th>
<th>Ejemplo</th>
<th>Validación</th>
<th>Mensaje de error</th>
<th>R?*</th>
</tr>
</thead>
<tbody>
<tr>
<td>interesado_pNombre</td>
<td><code>&lt;input type=&quot;text&quot; name=&quot;interesado_pNombre&quot; id=&quot;interesado_pNombre&quot;/&gt;</code></td>
<td>Únicamente permite el ingreso de un nombre. Ejemplo: &#8220;Iván&#8221;</td>
<td>Por favor ingrese su nombre</td>
<td>Sí</td>
</tr>
<tr>
<td>interesado_pApellido</td>
<td><code>&lt;input type=&quot;text&quot; name=&quot;interesado_pApellido&quot; id=&quot;interesado_pApellido&quot;/&gt;</code></td>
<td>Similar al anterior, sólo permite el ingreso de un apellido. Ejemplo: &#8220;Bustos&#8221;</td>
<td>Por favor ingrese su apellido</td>
<td>Sí</td>
</tr>
<tr>
<td>interesado_pNombre_pApellido</td>
<td><code>&lt;input type=&quot;text&quot; name=&quot;interesado_pNombre_pApellido&quot; id=&quot;interesado_pNombre_pApellido&quot;/&gt;</code></td>
<td>Permite el ingreso de un nombre y un apellido. Ejemplo: &#8220;Iván Bustos&#8221;</td>
<td>Por favor ingrese su primer nombre y su primer apellido separados por un espacio.</td>
<td>Sí</td>
</tr>
<tr>
<td>interesado_nombreCompleto</td>
<td><code>&lt;input type=&quot;text&quot; name=&quot;interesado_nombreCompleto&quot; id=&quot;interesado_nombreCompleto&quot;/&gt;</code></td>
<td>Permite el ingreso de hasta 4 nombres y apellidos aceptando como mínimo 2. Ejemplo: &#8220;Iván Orlando Bustos&#8221;</td>
<td>Por favor ingrese sus nombres y apellidos separados por un espacio.</td>
<td>Sí</td>
</tr>
<tr>
<td>interesado_nombres</td>
<td><code>&lt;input type=&quot;text&quot; name=&quot;interesado_nombres&quot; id=&quot;interesado_nombres&quot;/&gt;</code></td>
<td>Permite el ingreso de hasta dos nombres. Ejemplo: &#8220;Iván Orlando&#8221;</td>
<td>Por favor ingrese sus nombres.</td>
<td>Sí</td>
</tr>
<tr>
<td>interesado_apellidos</td>
<td><code>&lt;input type=&quot;text&quot; name=&quot;interesado_apellidos&quot; id=&quot;interesado_apellidos&quot;/&gt;</code></td>
<td>Permite el ingreso de hasta dos apellidos. Ejemplo: &#8220;Bustos Torres&#8221;</td>
<td>Por favor ingrese sus apellidos.</td>
<td>Sí</td>
</tr>
<tr>
<td>interesado_correoElectronico</td>
<td><code>&lt;input type=&quot;text&quot; name=&quot;interesado_correoElectronico&quot; id=&quot;interesado_correoElectronico&quot;/&gt;</code></td>
<td>Basado principalmente en el Formato de Mensajería en Internet documento RCF 5322 que se puede accesar <a rel="nofollow" href="http://tools.ietf.org/html/rfc5322" title="haga clic aquí para accesar a este documento">aquí</a>. Permite el ingreso de un correo electrónico. Ejemplo: &#8220;ivan.bustos001@misitio.com.co&#8221;</td>
<td>Por favor ingrese su correo electrónico</td>
<td>Sí</td>
</tr>
<tr>
<td>interesado_sitioWeb</td>
<td><code>&lt;input type=&quot;text&quot; name=&quot;interesado_sitioWeb&quot; id=&quot;interesado_sitioWeb&quot;/&gt;</code></td>
<td>Acepta un Localizador Uniforme de Recursos (URL en inglés). Tenga en cuenta que no soporta cadenas de consulta (query strings en inglés). Ejemplos: &#8220;http://www.ivanbustos.com/&#8221;<br />,&#8221;www.ivanbustos.com&#8221;, &#8220;www.ivanbustos.com/&#8221;, &#8220;misubdominio.ivanbustos.com&#8221;, &#8220;ivanbustos.com&#8221;. <br />Nota: El mensaje de error sólo aparecerá si el usuario intenta llenar este campo.</td>
<td>Ingrese su sitio web correctamente.</td>
<td>No</td>
</tr>
<tr>
<td>interesado_comentario</td>
<td><code>&lt;textarea cols=&quot;30&quot; rows=&quot;10&quot; name=&quot;interesado_comentario&quot; id=&quot;interesado_comentario&quot;/&gt;&lt;/textarea&gt;</code></td>
<td>Acepta un comentario sin límite de caracteres. Soporta únicamente caracteres en español.</td>
<td>Error: su comentario puede que esté vacío, esté muy largo o que contenga caracteres no permitidos.</td>
<td>Sí</td>
</tr>
<tr>
<td>interesado_nombreDeUsuario</td>
<td><code>&lt;input type=&quot;text&quot; name=&quot;interesado_sitioWeb&quot; id=&quot;interesado_sitioWeb&quot; maxlength=&quot;7&quot; /&gt;</code></td>
<td>Acepta una combinación sin espacios de las letras del alfabeto anglosajón en mayúsculas o minúsculas junto con los números enteros del 0 al 9. Ejemplo: &#8220;vAncho17&#8243;</td>
<td>Ingrese correctamente su nombre de usuario.</td>
<td>Sí</td>
</tr>
<tr>
<td>interesado_contrasena1</td>
<td><code><code>&lt;input type=&quot;password&quot; name=&quot;interesado_contrasena1&quot; id=&quot;interesado_contrasena1&quot; maxlength=&quot;7&quot; /&gt;</code></code></td>
<td>Acepta cualquier combinación de caracteres exceptuando espacios.</td>
<td>Ingrese correctamente su contraseña.</td>
<td>Sí</td>
</tr>
<tr>
<td>interesado_contrasena2</td>
<td><code><code>&lt;input type=&quot;password&quot; name=&quot;interesado_contrasena2&quot; id=&quot;interesado_contrasena2&quot; maxlength=&quot;7&quot; /&gt;</code></code></td>
<td>Mostrará error si y sólo si el valor del campo interesado_contrasena1 no es igual a interesado_contrasena2. Acepta cualquier combinación de caracteres exceptuando espacios.</td>
<td>Ambas contraseñas deben ser iguales. Por favor revise.</td>
<td>Sí</td>
</tr>
<tr>
<td>interesado_cedula</td>
<td><code>&lt;input type=&quot;text&quot; name=&quot;interesado_cedula&quot; id=&quot;interesado_cedula&quot;/&gt;</code></td>
<td>Basada en la cédula de ciudadanía Colombiana, acepta el ingreso de hasta nueve números consecutivos del 0 al 9.</td>
<td>Ingrese correctamente su cédula de ciudadanía sin usar puntos.</td>
<td>Sí</td>
</tr>
<tr>
<td>interesado_fechaDeNacimiento</td>
<td><code>&lt;input type=&quot;text&quot; name=&quot;interesado_fechaDeNacimiento&quot; id=&quot;interesado_fechaDeNacimiento&quot;/&gt;</code></td>
<td>Basado en el formato de fechas comunmente usado por hispanohablantes (Día/Mes/Año). Ejemplo: &#8220;01/10/2004&#8243;, &#8220;31/02/2010&#8243;. <br />Nota: Recomiendo usar un calendario en javascript para evitar que el usuario ingrese manualmente la fecha.</td>
<td>Ingrese correctamente su fecha de nacimiento por favor.</td>
<td>Sí</td>
</tr>
<tr>
<td>interesado_telefono</td>
<td><code>&lt;input type=&quot;text&quot; name=&quot;interesado_telefono&quot; id=&quot;interesado_telefono&quot;/&gt;</code></td>
<td>Acepta los Formatos colombianos para celulares, teléfonos fijos junto con su indicativo departamental. Ejemplos: &#8220;+1 314 213 21 45&#8243;, &#8220;+13142132145&#8243;, &#8220;2744239&#8243;</td>
<td>Ingrese correctamente su teléfono por favor.</td>
<td>Sí</td>
</tr>
<tr>
<td>interesado_sexo</td>
<td><code>&lt;select name=&quot;interesado_sexo&quot; id=&quot;interesado_sexo&quot;&gt;&lt;/select&gt;</code></td>
<td>IBForm automáticamente poblará el campo de selección. Basado en el estándar ISO 5218:1977 Information interchange &#8212; Representation of human sexes disponible <a rel="nofollow" href="http://www.iso.org/iso/iso_catalogue/catalogue_tc/catalogue_detail.htm?csnumber=11219" title="haga clic aquí para accesar a este documento">aquí</a>, asignará a masculino un valor de 1, y femenino un valor de 2.</td>
<td>Seleccione por favor un sexo.</td>
<td>Sí</td>
</tr>
<tr>
<td>casa_direccion1</td>
<td><code>&lt;input type=&quot;text&quot; name=&quot;casa_direccion1&quot; id=&quot;casa_direccion1&quot; maxlength=&quot;50&quot; /&gt;</code></td>
<td>Acepta una combinación de caracteres hispanos y espacios.</td>
<td>Ingrese correctamente la dirección de su lugar de residencia por favor.</td>
<td>Sí</td>
</tr>
<tr>
<td>casa_direccion2</td>
<td><code>&lt;input type=&quot;text&quot; name=&quot;casa_direccion2&quot; id=&quot;casa_direccion2&quot; maxlength=&quot;30&quot; /&gt;</code></td>
<td>Acepta una combinación de caracteres hispanos y espacios. Usar para segundas líneas en direcciones. Generalmente para indicar el número de apartamento o suite. En Colombia por el momento no es necesario.</td>
<td>La segunda línea de la dirección de su lugar de residencia tiene caracteres inválidos. Revise por favor.</td>
<td>No</td>
</tr>
<tr>
<td>casa_direccionEstandar</td>
<td><code>&lt;input type=&quot;text&quot; name=&quot;casa_direccionEstandar&quot; id=&quot;casa_direccionEstandar&quot; /&gt;</code></td>
<td>No recomiendo su uso con fines comerciales ya que es algo puramente experimental. Basado en el Estándar de las Direcciones Urbanas para los Equipamientos del Sector Educativo del Instituto Geográfico Agustín Codazzi y el Ministerio de Educación Colombiano. Ver detalles de la nomenclatura en este <a rel="nofollow" href="http://www.mineducacion.gov.co/1621/articles-193290_estandar_direcciones_urbanas.pdf" title="haga clic aquí para accesar a este documento">documento pdf</a>. Ejemplos: <br /> &#8220;KR 110 A 86 B 28 MZ 19&#8243;, <br /> &#8220;AV CARACAS 13 15&#8243;, <br /> &#8220;BR LAS ACACIAS MZ D LO 9&#8243;</td>
<td>Por favor ingrese la dirección de su lugar de residencia según el formato del Instituto Geográfico Agustín Codazzi.</td>
<td>Sí</td>
</tr>
<tr>
<td>casa_localidad</td>
<td><code>&lt;input type=&quot;text&quot; name=&quot;casa_localidad&quot; id=&quot;casa_localidad&quot; /&gt;</code></td>
<td>Creado para validar el nombre de una ciudad, un pueblo o similares.</td>
<td>Ingrese el nombre de la localidad de su lugar de residencia (ciudad, pueblo, municipio) por favor.</td>
<td>Sí</td>
</tr>
<tr>
<td>casa_codigoPostal</td>
<td><code>&lt;input type=&quot;text&quot; name=&quot;casa_codigoPostal&quot; id=&quot;casa_codigoPostal&quot; /&gt;</code></td>
<td>Valida 6 números consecutivos que forman el nuevo código postal Colombiano. Consulte su código postal en el sitio web de la <a rel="nofollow" href="http://www.4-72.com.co/content/codigos-postales" title="haga clic aquí para accesar a este documento">Red Postal de Colombia 4-72</a>. Ejemplo: &#8220;110931&#8243;.</td>
<td>Ingrese el Código Postal Colombiano de su lugar de residencia por favor.</td>
<td>Sí</td>
</tr>
<tr>
<td>casa_telefono</td>
<td><code>&lt;input type=&quot;text&quot; name=&quot;casa_telefono&quot; id=&quot;casa_telefono&quot;/&gt;</code></td>
<td>Acepta los Formatos colombianos para celulares, teléfonos fijos junto con su indicativo departamental. Ejemplos: &#8220;+1 314 213 21 45&#8243;, &#8220;+13142132145&#8243;, &#8220;2744239&#8243;</td>
<td>Ingrese correctamente el teléfono de su lugar de residencia por favor.</td>
<td>Sí</td>
</tr>
<tr>
<td>casa_departamento</td>
<td><code>&lt;select name=&quot;casa_departamento&quot; id=&quot;casa_departamento&quot;&gt;&lt;/select&gt;</code></td>
<td>IBForm automaticamente poblará el campo de selección de la siguiente manera: <br />&lt;option value=&quot;amazonas&quot;&gt;Amazonas&lt;/option&gt;<br />&lt;option value=&quot;antioquia&quot;&gt;Antioquia&lt;/option&gt;<br />&lt;option value=&quot;arauca&quot;&gt;Arauca&lt;/option&gt;<br />&lt;option value=&quot;atlantico&quot;&gt;Atlántico&lt;/option&gt;<br />&lt;option value=&quot;bolivar&quot;&gt;Bolívar&lt;/option&gt;<br />&lt;option value=&quot;boyaca&quot;&gt;Boyacá&lt;/option&gt;<br />&lt;option value=&quot;caldas&quot;&gt;Caldas&lt;/option&gt;<br />&lt;option value=&quot;caqueta&quot;&gt;Caquetá&lt;/option&gt;<br />&lt;option value=&quot;casanare&quot;&gt;Casanare&lt;/option&gt;<br />&lt;option value=&quot;cauca&quot;&gt;Cauca&lt;/option&gt;<br />&lt;option value=&quot;cesar&quot;&gt;Cesar&lt;/option&gt;<br />&lt;option value=&quot;choco&quot;&gt;Chocó&lt;/option&gt;<br />&lt;option value=&quot;cordoba&quot;&gt;Córdoba&lt;/option&gt;<br />&lt;option value=&quot;cundinamarca&quot;&gt;Cundinamarca&lt;/option&gt;<br />&lt;option value=&quot;guainia&quot;&gt;Guainía&lt;/option&gt;<br />&lt;option value=&quot;guaviare&quot;&gt;Guaviare&lt;/option&gt;<br />&lt;option value=&quot;huila&quot;&gt;Huila&lt;/option&gt;<br />&lt;option value=&quot;guajira&quot;&gt;La Guajira&lt;/option&gt;<br />&lt;option value=&quot;magdalena&quot;&gt;Magdalena&lt;/option&gt;<br />&lt;option value=&quot;meta&quot;&gt;Meta&lt;/option&gt;<br />&lt;option value=&quot;narino&quot;&gt;Nariño&lt;/option&gt;<br />&lt;option value=&quot;nortesantander&quot;&gt;Norte de Santander&lt;/option&gt;<br />&lt;option value=&quot;putumayo&quot;&gt;Putumayo&lt;/option&gt;<br />&lt;option value=&quot;quindio&quot;&gt;Quindío&lt;/option&gt;<br />&lt;option value=&quot;risaralda&quot;&gt;Risaralda&lt;/option&gt;<br />&lt;option value=&quot;sanandres&quot;&gt;San Andrés y Providencia&lt;/option&gt;<br />&lt;option value=&quot;santander&quot;&gt;Santander&lt;/option&gt;<br />&lt;option value=&quot;sucre&quot;&gt;Sucre&lt;/option&gt;<br />&lt;option value=&quot;tolima&quot;&gt;Tolima&lt;/option&gt;<br />&lt;option value=&quot;valle&quot;&gt;Valle del Cauca&lt;/option&gt;<br />&lt;option value=&quot;vaupes&quot;&gt;Vaupés&lt;/option&gt;<br />&lt;option value=&quot;vichada&quot;&gt;Vichada&lt;/option&gt;</td>
<td>Seleccione por favor el departamento donde se encuentra ubicado su lugar de residencia.</td>
<td>Sí</td>
</tr>
<tr>
<td>trabajo_direccion1</td>
<td><code>&lt;input type=&quot;text&quot; name=&quot;trabajo_direccion1&quot; id=&quot;trabajo_direccion1&quot; maxlength=&quot;50&quot; /&gt;</code></td>
<td>Acepta una combinación de caracteres hispanos y espacios.</td>
<td>Ingrese correctamente la dirección de su sitio de trabajo por favor.</td>
<td>No</td>
</tr>
<tr>
<td>trabajo_direccion2</td>
<td><code>&lt;input type=&quot;text&quot; name=&quot;trabajo_direccion2&quot; id=&quot;trabajo_direccion2&quot; maxlength=&quot;30&quot; /&gt;</code></td>
<td>Acepta una combinación de caracteres hispanos y espacios. Usar para segundas líneas en direcciones. Generalmente para indicar el número de apartamento o suite. En Colombia por el momento no es necesario.</td>
<td>La segunda línea de la dirección de su sitio de trabajo tiene caracteres inválidos. Revise por favor.</td>
<td>No</td>
</tr>
<tr>
<td>trabajo_direccionEstandar</td>
<td><code>&lt;input type=&quot;text&quot; name=&quot;trabajo_direccionEstandar&quot; id=&quot;trabajo_direccionEstandar&quot; /&gt;</code></td>
<td>No recomiendo su uso con fines comerciales ya que es algo puramente experimental. Basado en el Estándar de las Direcciones Urbanas para los Equipamientos del Sector Educativo del Instituto Geográfico Agustín Codazzi y el Ministerio de Educación Colombiano. Ver detalles de la nomenclatura en este <a rel="nofollow" href="http://www.mineducacion.gov.co/1621/articles-193290_estandar_direcciones_urbanas.pdf" title="haga clic aquí para accesar a este documento">documento pdf</a>. Ejemplos: <br /> &#8220;KR 110 A 86 B 28 MZ 19&#8243;, <br /> &#8220;AV CARACAS 13 15&#8243;, <br /> &#8220;BR LAS ACACIAS MZ D LO 9&#8243;</td>
<td>Por favor ingrese la dirección de su sitio de trabajo según el formato del Instituto Geográfico Agustín Codazzi.</td>
<td>No</td>
</tr>
<tr>
<td>trabajo_localidad</td>
<td><code>&lt;input type=&quot;text&quot; name=&quot;trabajo_localidad&quot; id=&quot;trabajo_localidad&quot; /&gt;</code></td>
<td>Creado para validar el nombre de una ciudad, un pueblo o similares.</td>
<td>Ingrese el nombre de la localidad de su sitio de trabajo (ciudad, pueblo, municipio) por favor.</td>
<td>No</td>
</tr>
<tr>
<td>trabajo_codigoPostal</td>
<td><code>&lt;input type=&quot;text&quot; name=&quot;trabajo_codigoPostal&quot; id=&quot;trabajo_codigoPostal&quot; /&gt;</code></td>
<td>Valida 6 números consecutivos que forman el nuevo código postal Colombiano. Consulte su código postal en el sitio web de la <a rel="nofollow" href="http://www.4-72.com.co/content/codigos-postales" title="haga clic aquí para accesar a este documento">Red Postal de Colombia 4-72</a>. Ejemplo: &#8220;110931&#8243;.</td>
<td>Ingrese el Código Postal Colombiano de su sitio de trabajo por favor.</td>
<td>No</td>
</tr>
<tr>
<td>trabajo_telefono</td>
<td><code>&lt;input type=&quot;text&quot; name=&quot;trabajo_telefono&quot; id=&quot;trabajo_telefono&quot;/&gt;</code></td>
<td>Acepta los Formatos colombianos para celulares, teléfonos fijos junto con su indicativo departamental. Ejemplos: &#8220;+1 314 213 21 45&#8243;, &#8220;+13142132145&#8243;, &#8220;2744239&#8243;</td>
<td>Ingrese correctamente el teléfono de su sitio de trabajo por favor.</td>
<td>No</td>
</tr>
<tr>
<td>trabajo_departamento</td>
<td><code>&lt;select name=&quot;trabajo_departamento&quot; id=&quot;trabajo_departamento&quot;&gt;&lt;/select&gt;</code></td>
<td>IBForm automaticamente poblará el campo de selección de la misma manera en que lo hace casa_departamento.</td>
<td>Seleccione por favor el departamento donde se encuentra ubicado su sitio de trabajo</td>
<td>Sí</td>
</tr>
<tr>
<td>envio_direccion1</td>
<td><code>&lt;input type=&quot;text&quot; name=&quot;envio_direccion1&quot; id=&quot;trabajo_direccion1&quot; maxlength=&quot;50&quot; /&gt;</code></td>
<td>Acepta una combinación de caracteres hispanos y espacios.</td>
<td>Ingrese correctamente la dirección de envío correctamente por favor.</td>
<td>Sí</td>
</tr>
<tr>
<td>envio_direccion2</td>
<td><code>&lt;input type=&quot;text&quot; name=&quot;envio_direccion2&quot; id=&quot;envio_direccion2&quot; maxlength=&quot;30&quot; /&gt;</code></td>
<td>Acepta una combinación de caracteres hispanos y espacios. Usar para segundas líneas en direcciones. Generalmente para indicar el número de apartamento o suite. En Colombia por el momento no es necesario.</td>
<td>La segunda línea de la dirección de envío tiene caracteres inválidos. Revise por favor.</td>
<td>No</td>
</tr>
<tr>
<td>envio_direccionEstandar</td>
<td><code>&lt;input type=&quot;text&quot; name=&quot;envio_direccionEstandar&quot; id=&quot;envio_direccionEstandar&quot; /&gt;</code></td>
<td>No recomiendo su uso con fines comerciales ya que es algo puramente experimental. Basado en el Estándar de las Direcciones Urbanas para los Equipamientos del Sector Educativo del Instituto Geográfico Agustín Codazzi y el Ministerio de Educación Colombiano. Ver detalles de la nomenclatura en este <a rel="nofollow" href="http://www.mineducacion.gov.co/1621/articles-193290_estandar_direcciones_urbanas.pdf" title="haga clic aquí para accesar a este documento">documento pdf</a>. Ejemplos: <br /> &#8220;KR 110 A 86 B 28 MZ 19&#8243;, <br /> &#8220;AV CARACAS 13 15&#8243;, <br /> &#8220;BR LAS ACACIAS MZ D LO 9&#8243;</td>
<td>Por favor ingrese la dirección de envío según el formato del Instituto Geográfico Agustín Codazzi.</td>
<td>Sí</td>
</tr>
<tr>
<td>envio_localidad</td>
<td><code>&lt;input type=&quot;text&quot; name=&quot;envio_localidad&quot; id=&quot;envio_localidad&quot; /&gt;</code></td>
<td>Creado para validar el nombre de una ciudad, un pueblo o similares.</td>
<td>Ingrese el nombre de la localidad de envío (ciudad, pueblo, municipio) por favor.</td>
<td>Sí</td>
</tr>
<tr>
<td>envio_codigoPostal</td>
<td><code>&lt;input type=&quot;text&quot; name=&quot;envio_codigoPostal&quot; id=&quot;envio_codigoPostal&quot; /&gt;</code></td>
<td>Valida 6 números consecutivos que forman el nuevo código postal Colombiano. Consulte su código postal en el sitio web de la <a rel="nofollow" href="http://www.4-72.com.co/content/codigos-postales" title="haga clic aquí para accesar a este documento">Red Postal de Colombia 4-72</a>. Ejemplo: &#8220;110931&#8243;.</td>
<td>Ingrese el Código Postal Colombiano del sitio de envío por favor.</td>
<td>Sí</td>
</tr>
<tr>
<td>envio_telefono</td>
<td><code>&lt;input type=&quot;text&quot; name=&quot;envio_telefono&quot; id=&quot;envio_telefono&quot;/&gt;</code></td>
<td>Acepta los Formatos colombianos para celulares, teléfonos fijos junto con su indicativo departamental. Ejemplos: &#8220;+1 314 213 21 45&#8243;, &#8220;+13142132145&#8243;, &#8220;2744239&#8243;</td>
<td>Ingrese correctamente el teléfono del lugar de envío por favor.</td>
<td>Sí</td>
</tr>
<tr>
<td>envio_departamento</td>
<td><code>&lt;select name=&quot;envio_departamento&quot; id=&quot;envio_departamento&quot;&gt;&lt;/select&gt;</code></td>
<td>IBForm automaticamente poblará el campo de selección de la misma manera en que lo hace casa_departamento.</td>
<td>Seleccione por favor el departamento del sitio de envío.</td>
<td>Sí</td>
</tr>
<tr>
<td>pago_direccion1</td>
<td><code>&lt;input type=&quot;text&quot; name=&quot;pago_direccion1&quot; id=&quot;pago_direccion1&quot; maxlength=&quot;50&quot; /&gt;</code></td>
<td>Acepta una combinación de caracteres hispanos y espacios.</td>
<td>Ingrese correctamente la dirección del comprador correctamente por favor.</td>
<td>Sí</td>
</tr>
<tr>
<td>pago_direccion2</td>
<td><code>&lt;input type=&quot;text&quot; name=&quot;pago_direccion2&quot; id=&quot;pago_direccion2&quot; maxlength=&quot;30&quot; /&gt;</code></td>
<td>Acepta una combinación de caracteres hispanos y espacios. Usar para segundas líneas en direcciones. Generalmente para indicar el número de apartamento o suite. En Colombia por el momento no es necesario.</td>
<td>La segunda línea de la dirección del comprador tiene caracteres inválidos. Revise por favor.</td>
<td>Sí</td>
</tr>
<tr>
<td>pago_direccionEstandar</td>
<td><code>&lt;input type=&quot;text&quot; name=&quot;pago_direccionEstandar&quot; id=&quot;pago_direccionEstandar&quot; /&gt;</code></td>
<td>No recomiendo su uso con fines comerciales ya que es algo puramente experimental. Basado en el Estándar de las Direcciones Urbanas para los Equipamientos del Sector Educativo del Instituto Geográfico Agustín Codazzi y el Ministerio de Educación Colombiano. Ver detalles de la nomenclatura en este <a rel="nofollow" href="http://www.mineducacion.gov.co/1621/articles-193290_estandar_direcciones_urbanas.pdf" title="haga clic aquí para accesar a este documento">documento pdf</a>. Ejemplos: <br /> &#8220;KR 110 A 86 B 28 MZ 19&#8243;, <br /> &#8220;AV CARACAS 13 15&#8243;, <br /> &#8220;BR LAS ACACIAS MZ D LO 9&#8243;</td>
<td>Por favor ingrese la dirección del comprador según el formato del Instituto Geográfico Agustín Codazzi.</td>
<td>Sí</td>
</tr>
<tr>
<td>pago_localidad</td>
<td><code>&lt;input type=&quot;text&quot; name=&quot;pago_localidad&quot; id=&quot;pago_localidad&quot; /&gt;</code></td>
<td>Creado para validar el nombre de una ciudad, un pueblo o similares.</td>
<td>Ingrese el nombre de la localidad del comprador (ciudad, pueblo, municipio) por favor.</td>
<td>Sí</td>
</tr>
<tr>
<td>pago_codigoPostal</td>
<td><code>&lt;input type=&quot;text&quot; name=&quot;pago_codigoPostal&quot; id=&quot;pago_codigoPostal&quot; /&gt;</code></td>
<td>Valida 6 números consecutivos que forman el nuevo código postal Colombiano. Consulte su código postal en el sitio web de la <a rel="nofollow" href="http://www.4-72.com.co/content/codigos-postales" title="haga clic aquí para accesar a este documento">Red Postal de Colombia 4-72</a>. Ejemplo: &#8220;110931&#8243;.</td>
<td>Ingrese el Código Postal Colombiano del comprador por favor.</td>
<td>Sí</td>
</tr>
<tr>
<td>pago_departamento</td>
<td><code>&lt;select name=&quot;pago_departamento&quot; id=&quot;pago_departamento&quot;&gt;&lt;/select&gt;</code></td>
<td>IBForm automaticamente poblará el campo de selección de la misma manera en que lo hace casa_departamento.</td>
<td>Seleccione por favor el departamento del comprador.</td>
<td>Sí</td>
</tr>
<tr>
<td>tarjeta_numero</td>
<td><code>&lt;input type=&quot;text&quot; name=&quot;tarjeta_numero&quot; id=&quot;tarjeta_numero&quot; /&gt;</code></td>
<td>Acepta hasta 9 números consecutivos del 1 al 9.</td>
<td>Ingrese correctamente el número de su tarjeta de crédito/débito sin espacios por favor.</td>
<td>Sí</td>
</tr>
<tr>
<td>tarjeta_titular</td>
<td><code>&lt;input type=&quot;text&quot; name=&quot;tarjeta_titular&quot; id=&quot;tarjeta_titular&quot; /&gt;</code></td>
<td>Similar a interesado_nombreCompleto, acepta un nombre completo.</td>
<td>Ingrese correctamente el titular de su tarjeta de crédito/débito sin espacios por favor.</td>
<td>Sí</td>
</tr>
<tr>
<td>tarjeta_tipo</td>
<td><code>&lt;select name=&quot;tarjeta_tipo&quot; id=&quot;tarjeta_tipo&quot;&gt;&lt;/select&gt;</code></td>
<td>IBForm automáticamente poblará el campo de selección de la siguiente manera: <br /> <code>&lt;option value=&quot;visa&quot;&gt;Visa&lt;/option&gt; &lt;option value=&quot;mastercard&quot;&gt;MasterCard&lt;/option&gt; &lt;option value=&quot;american&quot;&gt;American Express&lt;/option&gt; &lt;option value=&quot;diners&quot;&gt;Diners Club&lt;/option&gt;</code></td>
<td>Seleccione por favor el tipo de tarjeta de pago.</td>
<td>Sí</td>
</tr>
</tbody>
</table>
<h2 id="campos">Agregando campos personalizados</h2>
<p><a href="#menuContenido" title="Haga clic aquí para leer esta sección">Ir al contenido</a></p>
<p>Si el campo que usted desea validar no se encuentra en la lista anterior, es fácil crear su propio campo completamente a su gusto con tan sólo una línea de código por medio de la función addCustomInput de IBForm cuya sintaxis es la siguiente:</p>
<p><code>objetoIBForm.addCustomInput(fieldName, fieldType, regularExpression, errorMessage, isRequired)</code></p>
<p><strong>Definición de parámetros:</strong></p>
<ul>
<li><code>fieldName</code>: Requerido. Acepta una cadena de texto (string) que deberá coincidir con el nombre del campo en el formulario que  desea validar.</li>
<li><code>fieldType</code>: Requerido. Acepta los siguientes: &#8220;text&#8221;,  &#8220;textarea&#8221;, &#8220;select-one&#8221;</li>
<li><code>regularExpression</code>:  Requerido . Acepta una expresión regular para procesar la validación del campo.</li>
<li><code>errorMessage</code>:  Requerido.  Una cadena de texto donde se almacena el mensaje de error.</li>
<li><code>isRequired</code>: Requerido. Verdadero o Falso. Determina si el campo es requerido.</li>
</ul>
<p>Para ilustrarlo con un ejemplo, al HTML del ejemplo original  le he  agregado un campo adicional que me permita validar números del seguro social estadounidense ya que el formulario será usado por visitantes de esa región. En adición, también requiero que el visitante seleccione su color favorito entre una lista de colores de la bandera Colombiana.</p>
<div class="codeBox html">
<ol>
<li>&lt;!DOCTYPE html PUBLIC &quot;-//W3C//DTD XHTML 1.1//EN&quot; &quot;http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd&quot;&gt;</li>
<li>&lt;html xmlns=&quot;http://www.w3.org/1999/xhtml&quot;&gt;</li>
<li>&nbsp;&nbsp;&lt;head&gt;</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;&lt;meta http-equiv=&quot;Content-Type&quot; content=&quot;text/html; charset=utf-8&quot; /&gt;</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;&lt;script type=&quot;text/javascript&quot; defer=&quot;defer&quot; src=&quot;IBForm-0.07.min.js&quot;&gt;&lt;/script&gt;</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;&lt;script type=&quot;text/javascript&quot; defer=&quot;defer&quot; src=&quot;validacion.js&quot;&gt;&lt;/script&gt;</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;&lt;title&gt;Demostración de IBForm&lt;/title&gt;&lt;/head&gt;</li>
<li>&nbsp;&nbsp;&lt;body&gt;</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;&lt;h1&gt;Formulario experimental: Direcciones en formato estándar&lt;/h1&gt;</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;&lt;form action=&quot;#&quot; method=&quot;post&quot;&gt;</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;p&gt;&lt;label for=&quot;interesado_pNombre_pApellido&quot;&gt;Ingrese su nombre:&lt;/label&gt;&lt;input type=&quot;text&quot; name=&quot;interesado_pNombre_pApellido&quot; id=&quot;interesado_pNombre_pApellido&quot;/&gt;&lt;/p&gt;</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;p&gt;&lt;label for=&quot;interesado_correoElectronico&quot;&gt;Ingrese su correo:&lt;/label&gt;&lt;input type=&quot;text&quot; name=&quot;interesado_correoElectronico&quot; id=&quot;interesado_correoElectronico&quot;/&gt;&lt;/p&gt;</li>
<li class="focus">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;p&gt;&lt;label for=&quot;numeroSocialUSA&quot;&gt;Ingrese su número de seguro social Estadounidense:&lt;/label&gt;&lt;input type=&quot;text&quot; name=&quot;numeroSocialUSA&quot; id=&quot;numeroSocialUSA&quot;&quot;/&gt;&lt;/p&gt;</li>
<li class="focus">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;p&gt;&lt;label for=&quot;colorFavorito&quot;>Seleccione su color favorito:&lt;/label&gt;&lt;select name=&quot;colorFavorito&quot; id=&quot;colorFavorito&quot;&gt;&lt;option value=&quot;ninguno&quot; selected=&quot;selected&quot;&gt;Seleccione uno&lt;/option&gt;&lt;option value=&quot;amarillo&quot;&gt;Amarillo&lt;/option&gt;&lt;option value=&quot;azul&quot;&gt;Azul&lt;/option&gt;&lt;option value=&quot;Rojo&quot;>Rojo&lt;/option&gt;&lt;/select&gt;&lt;/p&gt;</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;p&gt;&lt;label for=&quot;casa_departamento&quot;&gt;Seleccione departamento:&lt;/label&gt;&lt;select name=&quot;casa_departamento&quot; id=&quot;casa_departamento&quot;&gt;&lt;/select&gt;&lt;/p&gt;</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;p&gt;&lt;label for=&quot;interesado_comentario&quot;&gt;Ingrese su comentario:&lt;/label&gt;&lt;/p&gt;</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;p&gt;&lt;textarea rows=&quot;5&quot; cols=&quot;30&quot; name=&quot;interesado_comentario&quot; id=&quot;interesado_comentario&quot;&gt;&lt;/textarea&gt;&lt;/p&gt;</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;p&gt;&lt;input class=&quot;button&quot; type=&quot;submit&quot; value=&quot;Enviar&quot; /&gt;&lt;/p&gt;</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;&lt;/form&gt;</li>
<li>&nbsp;&nbsp;&lt;/body&gt;</li>
<li>&lt;/html&gt;</li>
</ol>
</div>
<p>Para validarlo, simplemente agrego las siguiente dos línea en mi archivo validación.js. Note que el campo de selección no requiere de ninguna Expressión Regular.</p>
<div class="codeBox javascript">
<ol>
<li>window.onload = </li>
<li>&nbsp;&nbsp;function()</li>
<li>&nbsp;&nbsp;{</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;var miFormularioIBForm = new IBForm(window.document.forms[0]);</li>
<li class="focus">&nbsp;&nbsp;&nbsp;&nbsp;miFormularioIBForm.addCustomInput(&quot;numeroSocialUSA&quot;,&quot;text&quot;,/^[0-9]{3}-[0-9]{2}-[0-9]{4}/,&quot;Por favor ingrese su número social&quot;,true);</li>
<li class="focus">&nbsp;&nbsp;&nbsp;&nbsp;miFormularioIBForm.addCustomInput(&quot;colorFavorito&quot;,&quot;select-one&quot;,&quot;&quot;,&quot;Por favor seleccione su color favorito&quot;,true);</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;window.document.forms[0].onsubmit =</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;function(event)</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;{</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var evt = event || window.event;</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (evt.preventDefault)</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;evt.preventDefault();&nbsp;&nbsp;</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;evt.returnValue = false;&nbsp;&nbsp;</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;evt.cancelBubble = true;&nbsp;&nbsp;</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var erroresEncontrados = new Array();</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;erroresEncontrados = miFormularioIBForm.validate();</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(erroresEncontrados.length == 0)</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;alert(&quot;El formulario es válido.&quot;);</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var mensaje = &quot;Se han encontrado los siguientes errores: \n&quot;</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for (var aux=0; aux&lt;=erroresEncontrados.length &#8211; 1; aux++)</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mensaje += erroresEncontrados[aux][1] + &quot;\n&quot;;</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;this.elements[erroresEncontrados[aux][0]].style.borderColor = &quot;#FF0000&quot;;</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;alert(mensaje);</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;};</li>
<li>&nbsp;&nbsp;};</li>
</ol>
</div>
<p>Si tiene algún comentario, pregunta o insulto acerca de IBForm no dude por favor en escribirme a través de mi <a href="http://www.ivanbustos.com/acerca-de/" title="Haga clic aquí">formulario de contacto</a>.</p>
<p><a href="#menuContenido" title="Haga clic aquí para leer esta sección">Ir al contenido</a></p>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.ivanbustos.com/laboratorio/validacion-de-formularios/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Iván Bustos</title>
		<link>http://www.ivanbustos.com/soluciones/ivan-bustos/</link>
		<comments>http://www.ivanbustos.com/soluciones/ivan-bustos/#comments</comments>
		<pubDate>Wed, 22 Dec 2010 20:21:48 +0000</pubDate>
		<dc:creator>Iván Bustos</dc:creator>
				<category><![CDATA[soluciones]]></category>

		<guid isPermaLink="false">http://www.ivanbustos.com/?p=93</guid>
		<description><![CDATA[Mi sitio web personal  incorpora Wordpress como sistema de gestión así como IBForm como sistema de validación de formularios en línea.]]></description>
			<content:encoded><![CDATA[<div class="solutionIntroduction">
<div class="solutionIntroVideo">
                <img src="http://www.ivanbustos.com/wp-content/uploads/2010/12/grande1.jpg" alt="Ivanbustos.com" />
                </div>
<h3>En mi sitio web personal encontrará una gran cantidad de apuntes, reseñas y ciertas anécdotas que espero sinceramente le sean útiles en su vida profesional.</h3>
<p><a href="http://www.ivanbustos.com/" title="Haga clic aquí para visitar el sitio oficial de esta solución">Visitar <span>Sitio Web</span></a></p>
</p></div>
<div class="solutionDescription">
<h2>El problema</h2>
<p>Decidí mejorar un poco mi sitio web. A pesar de que el diseño anterior también era muy atractivo y podía sin problemas plasmar mis pensamientos en mi blog, me di cuenta con el tiempo de que no existía el espacio adecuado para exponer y hablar sobre mis últimos trabajos y proyectos. También me di cuenta (por ciertas experiencias) que no es bueno publicar la hoja de vida de uno de una manera tan pública. Es por eso que me urgía crear una nueva versión de mi sitio web donde pudiera incorporar estos nuevos cambios mientras al mismo tiempo se mejora la experiencia de usuario.</p>
<h2>La solución</h2>
<p>Mi nuevo sitio web es prácticamente un tema para WordPress que hace uso de ciertos plugins y taxonomías adicionales (ambos desarrollados por mí). El sitio web, fácilmente gestionable, mantiene una paleta de colores elegante con una interfaz simple lo que permite que el mismo sea fácil de usar y cómodo para la vista del visitante. En esta nueva versión de mi sitio web,  se ha dado una gran importancia a la creación de espacios dedicados a la exposición de mis trabajos y experimentos. En concreto, la sección <a href="http://www.ivanbustos.com/soluciones" title="Haga clic aquí para acceder a esta sección">Soluciones</a> y <a href="http://www.ivanbustos.com/laboratorio" title="Haga clic aquí para acceder a esta sección">Laboratorio</a> me permiten a mí mostrar mis proyectos. </p>
<p>Cada proyecto o experimento, consta adicionalmente de una página (como esta) donde hablo del mismo, explicando qué me motivó a la creación del determinado proyecto así como las técnicas de desarrollo que empleé hasta su culminación.</p>
<p>Una de las cosas más interesantes de este proyecto, es que tuve la posibilidad de implementar IBForms, mi propio sistema de validación de formularios que me permite fácilmente validar cualquier formulario antes de su respectivo procesamiento.</p>
<p>En adición, ud. también podrá notar que el acceso a mi hoja de vida es ahora restringido lo que ojalá reduzca el número de spam que recibía en mi correo. Si está interesado en consultar mi <a href="http://www.ivanbustos.com/hoja-de-vida" title="Haga clic aquí para acceder a esta sección">hoja de vida</a> por favor no dude en escribirme a través del formulario ubicado en la página <a href="http://www.ivanbustos.com/acerca-de" title="Haga clic aquí para acceder a esta sección">Acerca de</a>. Yo le enviaré su código de acceso que le permitirá consultar mi hoja de vida hasta por treinta días.</p>
</p></div>
]]></content:encoded>
			<wfw:commentRss>http://www.ivanbustos.com/soluciones/ivan-bustos/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Mi primera entrada</title>
		<link>http://www.ivanbustos.com/varios/mi-primera-entrada/</link>
		<comments>http://www.ivanbustos.com/varios/mi-primera-entrada/#comments</comments>
		<pubDate>Wed, 01 Dec 2010 19:57:21 +0000</pubDate>
		<dc:creator>Iván Bustos</dc:creator>
				<category><![CDATA[varios]]></category>

		<guid isPermaLink="false">http://www.ivanbustos.com/?p=1</guid>
		<description><![CDATA[Espero que les guste el nuevo diseño. Espero pronto ponerme a escribir para compartir cosas con ustedes mis lectores.]]></description>
			<content:encoded><![CDATA[<p>Bienvenidos a mi nuevo sitio web. Espero que les guste el nuevo diseño. Lamentablemente he estado bien ocupado, por tal motivo tuve que posponer la inauguración de mi sitio web personal por unos meses. Pero ya que está listo todo, espero pronto ponerme a escribir ya que no veo la hora para compartir cosas con ustedes mis lectores.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ivanbustos.com/varios/mi-primera-entrada/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

