A la hora de darle una funcionalidad más enfocada a aplicaciones de escritorio (por ejemplo con un editor WYSIWYG), suele ser necesario usar combinaciones de teclas CONTROL+tecla para ejecutar ciertas acciones.
Capturar la combinacion CTRL+tecla en javascript es muy sencillo:
var isCtrl = false;
document.onkeyup=function(e){
if(e.which == 17) isCtrl=false;
}
document.onkeydown=function(e){
if(e.which == 17) isCtrl=true;
if(e.which == 83 && isCtrl == true) {
// acción para CTRL+S y evitar que ejecute la acción propia del navegador
return false;
}
}/
La explicación es sencilla, cuando se pulsa CTRL+tecla se producen dos eventos de teclado, por lo que no es posible saber si se ha ejecutado en una sola llamada. Por ello primero comprobamos si se pulsa la tecla CTRL y se pone un flag a verdadero y luego dependiendo de la tecla que queramos, si se detecta que se pulsa y está el flag activo, se realiza la acción. Hay que devolver false para que el navegador no ejecute la acción que tiene por defecto. Cuando se deja de pulsar la tecla CTRL se pone el flag a false.
Ahora solo falta crear el controlador para las rutas de usuarios, dos en este caso:
GET /user/[user] para recuperar un usuario
PUT /user para crear un nuevo usuario
Lógicamente aún no hay nada de autenticación, por lo que cualquiera puede crear un usuario realizando una llamada PUT a la URL indicando userName, email y password.
Para comprobar la validez de los datos introducidos, usaremos joi. Usando las opciones de la ruta, indicaremos las reglas que deberá cumplir cada parámetro introducido. Así, para recuperar un usuario, se comprobará que user sea string, alfanumérico y que tenga una longitud de 3 a 20 caracteres:
Por último mostrar el código para crear un nuevo usuario. Primero se comprueba si existe un usuario con ese nickname o email. Si es así, se devuelve error usando boom, si no, se genera la contraseña encriptada (aquí no me he molestado mucho en ello, ya lo haré más adelante), y se crea el usuario usando el método create de moongose:
Últimamente, algunas webs como la BBC han modificado su diseño para hacerlo modular y permitir que el usuario realice Drag&Drop de los módulos para colocarlos cómo más le guste, algo que Netvibes o iGoogle ya hacían hace bastante tiempo. Afortunadamente, ahora con jQuery UI se puede realizar de forma muy sencilla.
El tutorial que enlazo explica paso a paso cómo hacerlo haciendo uso de jQuery, jQuery UI mediante los sortables y jQuery Cookies para trabajar con cookies de forma facil (y poder recuperar la configuración cuando el usuario vuelva a conectarse).
wForms es cógido Javascript no intrusivo que te ayuda a realizar las acciones más comunes con tus formularios web. Disponible en dos versiones, comprimida y legible, ofrece tres tipos de acciones en los formularios:
Validación de los campos de entrada: como se define los campos obligatorios y la comprobación del formato para cada campo.
Sincronización entre campos: cómo controlar campos del formulario dependiendo de otros campos.
Secciones condicionales: si aparecen o no campos basados en respuestas anteriores.
Lo mejor de la experiencia es que vamos aprendiendo de ella, y vamos mejorando, aunque no siempre es asà y siempre nos vienen bien unos cuantos consejos sobre el desarrollo web.
Hazlo sencillo, las caracterÃsticas que añadas, que sean para mejorar, no para distraer. Cuánto más fácil mejor para el usuario, mejor para tÃ.
Ãbrete lo máximo, comparte tus contenidos, crea una API para que otros puedan usarte, usa feeds.
Testea. Si, es lo más aburrido, lo de “beta” que está tan de moda ahora, no es solo algo de diseño, es una necesidad.
Empieza con lo básico y ve añadiendo funcionalidades de forma rápida y constante.
Persevera, no te dejes convencer de que no se puede hacer, si crees en el proyecto, sigue adelante.
No reinventes la rueda, sigue estándares, reutiliza herramientas y código en tus proyectos.
Planifica tu aplicación web para que admita escalabilidad y para que pueda crecer.
No pierdas de vista los microformatos, Adobe Apollo para la creación de aplicaciones de internet, Whobar para manejar identidades digitales y Akismet para luchar contra el spam.
FÃjate en la tendencia del contenido y el software social generado por los usuarios.
estas recomendaciones no sólo sirven para jQuery, sino que para todas las librerÃas/frameworks.
faltó una: usar if en vez de switch/case.
y por qué usar if en vez de switch/case? cuesta mucho explicar para los que no saben?