Javascript: Obtener el último carácter de una cadena

Ayer veíamos cómo obtener la primera letra de una cadena, hoy vamos a ver cómo obtener la última. Básicamente es lo mismo que en el otro ejemplo: usamos la función charAt(), pero en este caso en vez de un 0 le pasamos la longitud de la cadena restándole el último carácter (obtenemos la longitud a través de la propiedad length de la cadena). Tal que así:

#Un ejemplo donde haremos un alert
#de la última letra de una cadena

var cadena = "abc";
window.alert(cadena.charAt(cadena.length-1));
Anuncios

Javascript: obtener el primer carácter de una cadena.

¿Cómo se obtiene el primer carácter de una cadena con javascript? Pues es muy simple: con la función charAt(). Dicha función recibe como parámetro la posición dentro de la cadena en la que queremos buscar y devuelve el carácter que está en esa posición. Así que para obtener el primer carácter tenemos que pasarle un 0. Tal que así:

var cadena= "cadena";
var fstChar = cadena.charAt(0);

jQuery: enviando un formulario con ajax

No sabía sobre qué escribir, pero esta semana me preguntaron por esto así que puede ser cosa buena contarlo también por aquí.

Bueno, el primer punto a tener en cuenta es que jQuery nos ofrece varios métodos para realizar envío por ajax: el método post() (que hace una petición por post), el método get() (lógicamente por get) o el método ajax(). Para este ejemplo usaremos este último.

jQuery, por otra, parte nos permite no enviar todo el formulario sino sólo una lista de valores que podemos coger nosotros de los campos para, por ejemplo, realizar validaciones que necesiten consultas del lado del servidor. Pero para el ejemplo enviaremos todo el formulario.

En este caso vamos a suponer que tenemos un formulario con el id formulario que tenemos que enviar a una página llamada procesa.php, que a su vez nos devuelve una cadena de texto informándonos del éxito de la operación. La acción del envío se activa cuando hacemos click sobre un elemento con el id enviar. Sobre la cabecera de nuestro formulario hay un div con el id resultado donde podemos informar al usuario del resultado de su envío. Vamos entonces con el código jQuery:

<script type="text/javascript">   
$(function(){
  $("#enviar").click(function(){
    $("#resultado").html("<p id='enviando'>Enviando datos</p>");
    $.ajax({
      method: "POST",
      url: "procesa.php",
      data: $("#formulario").serialize()
    })
    .done(function( msg ) {
      $("#enviando").hide();
      $("#resultado").html("Formulario enviado:" + msg);
    })
    .fail(function() {
      $("#enviando").hide();
      $("#resultado").html("Se ha producido un error y no se han podido procesar los datos");
    })
  });
});
</script>

Deshabilitar el botón “atrás” del navegador con Javascript

Esto fue una ñapa que hice en su día para un curso en el que era alumno. Uno de los profesores se pispó de que en los exámenes de la plataforma virtual los alumnos podían hacer todo el examen, ver la autocorrección de la plataforma, volver hacia atrás pulsando el botón de retroceder del navegador y repetirlo. Como había buen rollo y sabía que yo era programador me preguntó si había una forma de bloquear el botón “retroceder” del navegador… y se lo arreglé con esto:

//primero añadía esta línea de javascript
<script type="text/javascript">
    window.history.forward();
    function sinVueltaAtras(){ window.history.forward(); }
</script>
//y en el body invocaba la función en la carga
<BODY onload="sinVueltaAtras();" onpageshow="if (event.persisted) sinVueltaAtras();" onunload="">

¿Qué hace este código? Pues no deshabilita exactamente el botón atrás, lo que hace es que la página automáticamente se vaya hacia delante. Al ponerlo en la cabecera de la página que cargaba las preguntas hacía que si el alumno retrocedía al cargar la página automáticamente volviera a la última.

La mejor solución habría sido que la plataforma no realizara la autocorrección hasta haber enviado el examen… pero eso ya se lo habría tenido que cobrar.

Javascript: Generar números aleatorios.

¿Cómo se generan números aleatorios en Javascript? Pues con la función random() del objeto Math. Vamos a ver cómo generar números aleatorios entre 1 y 10, 1 y 100 y 1 y 1000.

//de 1 al 10
var lenumero = Math.floor(Math.random() * 10 + 1);

//de 1 a 100
var lenumero = Math.floor(Math.random() * 100 + 1);

//de 1 a 1000
var lenumero = Math.floor(Math.random() * 1000 + 1);

En fin, viendo el ejemplo arriba ya puedes ver que generar un número aleatorio entre 1 y N se hace siguiendo la siguiente fórmula:

//de 1 a un número N
var lenumero = Math.floor(Math.random() * N + 1);

Calcular el IMC con Javascript

Esta semana en el trabajo me encontraba con una petición de un cliente. En un formulario donde insertaba peso y talla de una persona quería que hubiera un campo con el índice de masa corporal, que debía rellenarse solo. ¿Esto cómo va? Pues lo arreglamos con una función de javascript:

function calculaIMC(){
  //declaramos las variables
  var peso, altura, imc;
  //recogemos los datos.
  //Suponemos que los campos
  //tienen esos Id.
  //El peso en KG y la altura en cm
  //para operar mejor
  peso=document.getElementById("peso").value;
  altura=document.getElementById("altura").value;
  //comprobamos que los campos
  //no vengan vacíos
  if(peso!="" && altura!=""){
    //aplicamos la fórmula
    altura = parseInt(altura)/100;
    imc=peso/(altura*altura);
    document.getElementById("imc").value=imc.toFixed(2);
  }
}

Recuerda que queremos que los datos se introduzcan como tipos enteros: puedes poner una validación por javascript para que no metan comas, usar un campo numeric de HTML5 (hoy por hoy ya todos los navegadores modernos lo soportan) o hasta tirar de una vieja librería de jQuery (que servía para asegurarnos el funcionamiento en navegadores viejos, aunque hoy por hoy ya no tenga mucho sentido).

Javascript: convertir Array en CSV

Vamos con un tip rápido de javascript ¿cómo convertimos un array en una cadena de valores separados por comas? Es bastante sencillo lograrlo, y así obtener un formato válido para crear un fichero CSV más adelante:

var sabbath = ['ozzy', 'iommi', 'bill', 'geezer'];

var sabbathCsv = sabbath.valueOf();

Si lo que queremos son comas como separador el método valueOf() ya nos hace el trabajo, pero ¿si queremos otro separador? Entonces recurriremos a join().

var icada = ['drogas', 'boni', 'alf', 'fer'];

var icadaCsv = icada.join("#");

En el ejemplo de arriba usará el caracter # como separador en lugar de las comas.