Artículos
HTML

Combo que soporte múltiples selecciones en HTML

Creado: 09/Ago/2009 Actualizado: 17/May/2015

Por defecto, cuando montamos un menú de selección en HTML vemos que podemos escoger una sola de las opciones. Veamos el código normal a la hora de construir un combo SELECT de opciones:

Si queremos que el usuario pueda marcar diferentes de las opciones tendremos que hacer uso del atributo múltiple dentro del SELECT. Si asignamos el valor:

multiple="multiple"

Habilitaremos la selección múltiple. Veamos como quedaría el nuevo código:

Código Fuente

Descárgate el código fuente de Combo que soporte múltiples selecciones en HTML
Y si te ha gustado nuestro código fuente puedes regalarnos una estrella Star

Vídeos sobre HTML

Disfruta también de nuestros artículos sobre HTML en formato vídeo. Aprovecha y suscribete a nuestro canal.

Test HTML

¿Te atreves a probar tus habilidades y conocimiento en HTML con nuestro test?

Test HTML
Artículos
AJAX

Repaginar datos con AJAX

Creado: 06/Ago/2009 Actualizado: 27/Ago/2021

Una de las cosas que nos permite AJAX es realizar peticiones asíncronas, las cuales solo recarguen una parte de la página. Esto nos da la posibilidad de dar la sensación de velocidad de cara al usuario. Un caso ejemplo es el de la repaginación de datos. Es decir, tener una lista de elementos dentro de las páginas e ir avanzando o retrocediendo en el listado. Buscando no afectar al resto de la página.

En el ejemplo repaginar datos con AJAX nos vamos a centrar en la parte cliente de petición (en nuestra página HTML). No entraremos en detalle de la construcción de la parte servidor. Si bien, dejo pendiente el escribir un artículo completo que utilice AJAX, PHP y acceso a datos MySQL. Lo cual nos dejará ver el proceso entero de una forma más detallada.

Empezaremos definiendo la página del servidor que nos devuelva los datos. Esta puede estar construida en cualquier tecnología del lado del servidor. Véase ASP, PHP, JSP,… En nuestro caso vamos a crear una pequeña página en JSP.

Esta página recibe un parámetro denominado «página». Según el valor que le llegue como parámetro devolverá una lista HTML u otra. La URL será algo como lo siguiente:

http://www.miservidor.com/datos.jsp?pagina=2

Aunque no quiero entrar en detalle del código JSP os adjunto un pequeño extracto del código. De forma orientativa:

<%
String[] provincias = {"Álava","Albacete","Alicante","Almería",...,"Zamora","Zaragoza"};

int pagina = Integer.valueOf(request.getParameter("pagina"));
pagina=(pagina-1)*10;

out.println("<ul>");
for (int x=0;x<10;x++)
	out.println("
  • " + provincias[pagina+x] + "
  • "); out.println("</ul>"); %>

    Comentándolo muy por encima, recupera el valor del parámetro utilizando el método .getParameter() y lo utiliza para acceder a un array de String. A partir de ese elemento del array devuelve 10 elementos en una lista HTML utilizando las etiquetas UL y LI.

    Pero centrémonos en la parte cliente. Lo primero será definir la página. La página tendrá una capa DIV donde iremos mostrando el contenido. Es importante darle un ID a la capa, ya que nuestro código JavaScript accederá a ella para ir modificando el contenido de forma asíncrona.

    Debajo de la capa pondremos 5 enlaces que llamen a una función JavaScript paginar. Esta función será la que realice la petición AJAX y cargue el contenido en la capa DIV.

    Veamos este código:

    1 | 2 | 3 | 4 | 5

    La función JavaScript paginar será la que realice todo el trabajo. Como vemos esta función recibe un parámetro que indica el número de página sobre el que queremos posicionarnos.

    function paginar(pagina) {...}
    

    Lo primero que tiene que realizar esta función es cargar el objeto que nos permita realizar las peticiones asíncronas a modo AJAX. Este objeto es XMLHttpRequest.

    Aunque el objeto XMLHttpRequest es un objeto ya estandarizado y definido por la W3C hay ciertos navegadores (como el Internet Explorer) que siguen sin implementarlo. En su defecto utilizan el objeto Microsoft.XMLHTTP. Este viene a hacer lo mismo, o algo parecido, pero con otro nombre.

    Es por ello que la instancia del objeto XMLHttpRequest se complica un poco. Quedaría de la siguiente manera:

     // Llama objeto XMLHttpRequest
     if (window.XMLHttpRequest) {
       req = new XMLHttpRequest();    
     
     // Si no funciona intenta utiliar el objeto IE/Windows ActiveX 
     } else if (window.ActiveXObject) {
       req = new ActiveXObject("Microsoft.XMLHTTP"); 
     }
    

    La variable que tiene la instancia es req. Esta variable será la que represente la conexión con el servicio de datos

    El siguiente paso será establecer la conexión. Para ello seguimos tres pasos:

    Primero indicamos que función JavaScript es la que va a procesar la respuesta del servidor. Esto lo hacemos mediante el evento .onreadystatechange de la petición. En nuestro caso será la función JavaScript «procesarRespuesta»

    req.onreadystatechange = procesarRespuesta;
    

    Segundo indicamos la URL a la cual queremos realizar la petición. Para componer la URL concatenamos la URL del servicio de datos con el número de página recibido como parámetro.

    url = 'http://www.miservidor.com/datos.jsp?pagina=' + pagina;
    req.open("GET",url,true);
    

    El método .open es el que utilizamos para indicar la URL. Este tiene varios parámetros: tipo de petición (GET,POST o PUT), la URL y si queremos que sea síncrono -false- o asíncrono -false- como tercer parametro.

    Tercero y último realizamos la petición. Para ello nos apoyamos en el método .send()

    req.send(null);
    

    Veamos como es la función repaginar entera:

    function paginar(pagina) {
     
     req = false;
     
     // Llama objeto XMLHttpRequest
     if (window.XMLHttpRequest) {
       req = new XMLHttpRequest();    
     
     // Si no funciona intenta utiliar el objeto IE/Windows ActiveX 
     } else if (window.ActiveXObject) {
       req = new ActiveXObject("Microsoft.XMLHTTP"); 
     }
     
     if(req!=null){
       req.onreadystatechange = procesarRespuesta;
       url = 'datos.jsp?pagina=' + pagina;   
       req.open("GET",url,true);
       req.send(null);
     }  
    }
    

    Ahora nos tenemos que centrar en la función JavaScript «procesarRespuesta». Esta función es la que recibirá los datos del servidor y los colocará en la capa.
    Los datos de la respuesta vienen en la propiedad .responseText de la petición (es decir, del objeto req). Es por ello que simplemente tenemos que pegarlos en la capa.

    function procesarRespuesta(){
    
    	contenido = document.getElementById('datos');
    	contenido.innerHTML="Cargando los datos...";
    
    	if (req.readyState==4 && req.status==200) {		
       		//mostrar resultados en esta capa
       		contenido.innerHTML = req.responseText;
      }
    
    }
    

    Para poder poner los datos en la capa DIV tenemos que haber accedido a ella mediante su ID y la función .getElementById(). Para modificar el contenido de una capa nos apoyamos en la propiedad .innerHTML. Esta propiedad será sobre la que dejemos el contenido de responseText.

    Y ya está. Con esto hemos construido una repaginación de datos con AJAX de una forma muy sencilla.

    Como último hay que destacar que tanto el archivo cliente como el servicio de datos tienen que estar en el mismo dominio. Debido a las políticas de seguridad de JavaScript.

    Artículos
    HTML

    Texto en negrita con HTML

    Creado: 01/Ago/2009 Actualizado: 08/Abr/2023

    La W3C recomienda el uso de CSS para realizar acciones de estilo y en este caso el uso de la negrita sobre el texto. Si bien, en este artículo vamos a ver cómo poner texto en negrita con HTML.

    Esta técnica viene de las primeras versiones de HTML en las que todavía no se había desarrollado el lenguaje de estilos CSS y se tenían que utilizar elementos de estructura del propio lenguaje HTML para poder dar estilos.

    El elemento b

    En este sentido nace el elemento b (que viene del inglés “bold”) el cual nos ayudaba a crear texto en negrita con HTML.

    La codificación será realmente sencilla, ya que solo necesitaremos utilizar el elemento b con el contenido de texto. Este elemento contendrá internamente el texto que queramos visualizar en negrita.

    El código que tendremos que incluir en nuestra página web seguirá la siguiente estructura semántica:

    <b>Texto en negrita</b>
    

    De esta manera si queremos poner un párrafo con los nombres de las personas en negrita crearíamos el siguiente código HTML:

    El pase que dio <b>Joaquín</b> fue rematado a gol por el delantero <b>Borja Iglesias</b>
    

    Se puede observar la codificación es muy sencilla para incluirla dentro de nuestras páginas web.

    El uso del elemento b está muy extendido, y aunque se ha intentado marcar como obsoleto en algún momento del estándar, a día de hoy (marzo 2023) sigue estando como elemento dentro del estándar.

    Y es que se refiere al elemento b como un elemento con el cual queramos llamar la atención del lector sin transmitir importancia adicional que no implica una voz o estado de ánimo alternativo.

    Los navegadores o agentes de usuario representan al elemento b en un formato de negrita y de esta forma podemos utilizar esta compatibilidad para poder disponer de texto en negrita con HTML.

    El elemento strong

    Algo parecido nos puede suceder con el elemento strong que en algunos momentos ha sido utilizado como alternativa al contenido de CSS para poder poner texto en negrita.

    En este caso el estándar HTML dice sobre el elemento strong que es un elemento de estructura que nos sirve para presentar una gran importancia, seriedad o urgencia para el contenido.

    La sintaxis del elemento strong es:

    <strong>Texto en negrita</strong>
    

    Que aplicado al mismo ejemplo que hemos visto antes quedaría de la siguiente forma:

    El pase que dio <strong>Joaquín</strong> fue rematado a gol por el delantero <strong>Borja Iglesias</strong>
    

    Con esto hemos visto dos alternativas a poder poner texto en negrita con HTML sin recurrir a las hojas de estilo CSS.

    Código Texto en negrita con HTML

    https://github.com/victorcuervo/lineadecodigo_html/blob/master/texto/texto-en-negrita.html

    Texto en negrita con HTML
    Texto en negrita con HTML

    Código Fuente

    Descárgate el código fuente de Texto en negrita con HTML
    Y si te ha gustado nuestro código fuente puedes regalarnos una estrella Star

    Vídeos sobre HTML

    Disfruta también de nuestros artículos sobre HTML en formato vídeo. Aprovecha y suscribete a nuestro canal.

    Test HTML

    ¿Te atreves a probar tus habilidades y conocimiento en HTML con nuestro test?

    Test HTML
    Artículos
    Java

    Enviar un array a una JSP

    Creado: Actualizado: 25/Ago/2021

    Ya hemos visto como Recibir parámetros en una JSP y Recibir un parámetro numérico en una JSP. El siguiente paso es ver como enviar un array a una JSP.

    Imaginemos que ofrecemos a nuestro usuario escoger entre un listado de opciones dentro de una página web. El típico caso de ¿Cuales son tus aficiones favoritas?. Veamos como sería el posible formulario.

    Lo primero será crear un combo para que el usuario seleccione las opciones. Nos apoyamos en la etiqueta SELECT para dicha tarea:

    En el combo tenemos que percatarnos de varias cosas. Por un lado el nombre del combo, es decir, el valor del atributo name. En este caso es favoritos. Este es muy importante, ya que será el atributo que recuperaremos desde la JSP.

    Por otro lado el atributo multiple. Este, al darle el valor «multiple» permite que el usuario de la página pueda seleccionar varias opciones. Todos los valores que el usuario seleccione serán los que viajen como una lista a nuestra JSP.

    Ahora ponemos el combo dentro del formulario:


    Como destino del formulario hemos indicado la JSP que recibirá la lista de opciones. Será la JSP enviar-array.jsp

    Empecemos con la JSP. En el ejemplo Recibir parámetros en una JSP veíamos la utilización del método .getParameter(), el cual nos devolvía el valor de uno de los parámetros enviados a la JSP.

    Si en este caso utilizásemos este método, con la variable favoritos, este nos devolvería la primera de las opciones seleccionadas. Pero como lo que queremos es que nos devuelva todas las opciones utilizadas, vamos a utilizar el método .getParameterValues(). Este método devuelve todos los valores asociados a uno de los parámetros.

    <%
      String[] favoritos = request.getParameterValues("favoritos");
    %>
    

    Ahora, solo nos quedará recorrerlo para mostrar en la JSP todos los valores que se nos han enviado. Para realizar esta tarea nos apoyaremos en un bucle for-each:

    <%
      for(String favorito: favoritos)
        out.println(favorito + "
    "); %>

    Como se puede ver es muy sencillo enviar un array a una JSP… :-)

    Vídeos sobre Java

    Disfruta también de nuestros artículos sobre Java en formato vídeo. Aprovecha y suscribete a nuestro canal.

    Test Java

    ¿Te atreves a probar tus habilidades y conocimiento en Java con nuestro test?

    Test Java