Codigo Java Script 1
Codigo Java Script 1
6
Para realizar la validación que necesitas puedes usar tu propia función de
validación o puedes usar la validación de HTML5.
Lo que tu deseas lo puedes lograr con la validación de HTML5 sin complicarte
mucho la vida, solo debes poner 3 atributos a tu etiqueta input.
Sin embargo, ya que deseas realizar tu propia validación, aqui te muestro como
podrías hacerla.
PROBLEMA
Validar un campo input de HTML5 con las siguientes condiciones:
1. El valor de input debe ser diferente de cero.
2. El valor de input de tener un máximo de 35 caracteres.
3. El valor de input sólo debe contener caracteres del alfabeto (letra 'A'
hasta la 'Z', en mayúsculas y/o minúsculas. El resto de caracteres no
serán válidos.
4. Si el campo es válido se debe colorear el borde de verde. Si no es
válido se debe colorear el borde de rojo.
SOLUCIÓN
Usando nuestra propia validación:
Para lograr lo que nos proponemos vamos a usar una expresión regular. Puedes
encontrar información de expresiones regulares en JavaScript RegExp Reference.
La expresión regular que usaremos viene dada de la siguiente forma:
/^[A-Z]+$/i
Donde:
^ indica que el patrón debe iniciar con los caracteres dentro de los corchetes
[A-Z] indica que los caracteres admitidos son letras del alfabeto
+ indica que los caracteres dentro de los corchetes se pueden repetir
$ indica que el patrón finaliza con los caracteres que están dentro de los
corchetes.
i indica que validaremos letras mayúsculas y minúsculas (case-insensitive)
Así, una posible implementación para nuestra validación sería la siguiente:
// La siguiente funcion valida el elemento input
function validar() {
// Variable que usaremos para determinar si el input es valido
let isValid = false;
input.willValidate = false;
// Por último, nuestra función que verifica si el campo es válido antes de realizar
cualquier otra acción.
function verificar() {
const valido = validar();
if (!valido) {
alert('El campo no es válido.');
} else {
alert('El campo es válido');
}
}
<form id="validationForm" name="validationForm">
<label forHTML="letras">Introduzca solo letras:</label>
<br>
<input type="text" id="letras" name="letras" onkeyup="validar()"
onblur="validar()" />
<div id="message" style="position: absolute; left: 10px; top: 50px; background-
color: Yellow; z-index: 10" hidden>
Introduzca solo letras (A-Z) o (a-z). Máximo 35 caracteres.
</div>
<br>
<br>
<button type="button" onclick="verificar()">Validar</button>
</form>
Ejecutar
Ampliar
El código HTML que incluyo es un ejemplo básico para mostrar la validación de un
campo input usando nuestra función.
He puesto un elemento div flotante que se oculta o se muestra según la validez
del input para mostrar un mensaje. Los estilos están "hardcodeados". Se puede
realizar algo más elaborado, pero eso va más allá de la intención de este ejemplo.
Usando la validación de HTML5:
Como te comenté anteriormente, la validación en HTML5 nos alivia la tarea de
tener que escribir nuestra propia validación. En la mayoría de los casos es
suficiente usar la validación de HTML5. Sin embargo, habrá casos en que esta
validación no será suficiente.
Para este caso en particular, HTML5 nos provee de toda la validación que
requerimos, un ejemplo de cómo pudiera quedar nuestro código es como sigue:
function validar2() {
const input = document.getElementById('campo');
if(!input.checkValidity()) {
alert('El campo no es válido.');
} else {
alert('El campo es válido.');
}
}
<form id="validationHTML" name="validationHTML">
<label forHTML="campo">Introduzca solo letras:</label>
<br>
<input type="text" id="campo" name="campo" pattern="^[A-Za-z]+$"
maxlength="35" required />
<button type="button" onclick="validar2()">Validar</button>
</form>
Ejecutar
Ampliar
Aqui podemos ver en acción la validación de HTML5, de una manera muy básica.
Con esto solo quiero mostrar que mucha de la validación de elementos input se la
podemos dejar al navegador.
Sin embargo, si deseamos personalizar el aspecto de la validación de HTML5,
tendremos que usar algo de CSS.
Espero que esto te sirva de ejemplo y te ayude a resolver tu problema.
REFERENCIAS
Javascript Validation API
HTML input Attributes
Javascript RegExp Reference
Un ejemplo de cómo podemos personalizar la validación de HTML5 usando CSS:
Styling Form Inputs Validity in CSS
0
Necesitas cambiar tus condiciones de la siguiente manera:
else if (/^\s+$/.test(caja1))
{
document.getElementById("txtnombre").focus();
document.getElementById("txtnombre").style.borderColor="green";
return true;
}
else if (/^([0-9])*$/.test(caja1))
{
alert("El valor " + caja1 + " no es una letra");
document.getElementById("txtnombre").focus();
document.getElementById("txtnombre").style.borderColor="red";
return false;
}
Esto funciona, pero solo es para validar que acepte letras, letras tildadas y
espacios, el código está hecho en TypeScript
Validaciones HTML5
ATRÁS HTML VALIDACIONES HTML5
Cada vez que creamos un formulario, la validación de los datos introducidos estará
situada en uno de los siguientes casos (colocados de peor a mejor):
2. Otro caso podría ser que el formulario tiene validación sólo en el front-
end (cliente). De esta forma, los datos son verificados en el navegador del
usuario antes de enviarse, pero carecen de validación en el back-end, por lo
que un usuario malintencionado podría eliminar la validación del front-end y
saltársela, enviando datos malintencionados que comprometan la seguridad
de la página.
Atributos básicos
Puede actuar
Atributo Valor Descripción
sobre...
Campos de
fecha Establece la fecha mínima permitida.
fecha
Campos de
fecha Establece la fecha máxima permitida.
fecha
input:valid,
textarea:valid {
background: green;
}
input:invalid,
textarea:invalid {
background: red;
}
Para ello hay que conocer algunas características básicas de las expresiones
regulares:
Expresión Carácter
Significado Descripción
regular especial
Agrupaciones alternativas
C(A|B) Paréntesis Agrupaciones
(o CA o CB )
Rangos de
[0-9] Corchetes Un dígito (del 0 al 9 )
carácteres
<html xmlns="http://www.w3.org/1999/xhtml">
<head id="Head1" runat="server">
<title></title>
<script type="text/javascript">
function blockSpecialChar(e){
var k;
document.all ? k = e.keyCode : k = e.which;
return ((k > 64 && k < 91) || (k > 96 && k < 123) || k == 8 || k == 32 || (k >= 4
8 && k <= 57));
}
</script>
</head>
<body>
<form id="frm" runat="server">
<input type="text" name="folderName" onkeypress="return blockSpecialChar(event)"/>
</form>
</body>
</html>
Intenta así
$(document).ready(function () {
$("#sub").click(function(){
var fn = $("#folderName").val();
var regex = /^[0-9a-zA-Z\_]+$/
alert(regex.test(fn));
});
});
https://www.youtube.com/watch?v=Dfjtgoai9JA
Validar un número decimal con JavaScript
function validateDecimal(valor) {
var RE = /^\d*\.?\d*$/;
if (RE.test(valor)) {
return true;
} else {
return false;
}
}
function validateDecimal(valor) {
var RE = /^\d*(\.\d{1})?\d{0,1}$/;
if (RE.test(valor)) {
return true;
} else {
return false;
}
}
Código HTML:
Ver original
1. <!DOCTYPE html>
2. <html lang="es-ar">
3. <head>
4. <meta charset="utf-8" />
5. <title>Entero + 2 decimales</title>
6.
7. <script type="text/javascript">
8. //<![CDATA[
9. function dos_decimales(cadena){
10. var expresion=/^\d+(\.\d{0,2})?$/;
11. var resultado=expresion.test(cadena);
12. return resultado;
13. }
14. function verifica(){
15. var campo = document.getElementById('valor');
16. if(dos_decimales(campo.value) !== true){
17. alert('formato no valido');
18. }
19. }
20. //]]>
21. </script>
22. </head>
23. <body>
24. <form action="#">
25. <p>
26. <input type="text" name="valor" id="valor" /><br />
27. <input type="button" value="verifica" onclick="verifica();"/>
28. </p>
29. </form>
30. </body>
31. </html>