Foros del Web » Programando para Internet » Javascript »

problema son expresiones regulares

Estas en el tema de problema son expresiones regulares en el foro de Javascript en Foros del Web. hola amigos del foro primera ves que posteo , tengo un problema usando dicha funciones regulares, verán quiero usarla para asegurarme que un elemento de ...
  #1 (permalink)  
Antiguo 30/01/2013, 18:35
 
Fecha de Ingreso: enero-2013
Mensajes: 38
Antigüedad: 11 años, 1 mes
Puntos: 0
problema son expresiones regulares

hola amigos del foro primera ves que posteo , tengo un problema usando dicha funciones regulares, verán quiero usarla para asegurarme que un elemento de un formulario este entre 1 y 12 cuando el usuario lo coloque, que solo le permita colar un numero entre uno y doce mas nada se le seria permitido consegui armar esta funcion regular que haci ese cometido pero no funciona la coloco en mi script y no lo toma en cuenta e aqui el codigo para explicarme mejor.



<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />
<title>Validar entrada de datos</title>
<script type="text/javascript">

function validar2(e) {
tecla = (document.all) ? e.keyCode : e.which;
if (tecla==8) return true;
patron = /^([0-1]?[0-2]|[0-9])$/ ; // aqui el detalle ignora la epresion regular
te = String.fromCharCode(tecla);
return patron.test(te);

}

</script>
</head>

<body>
<form action="#" onSubmit="javascript:document.form.reset();" method="post">
<p><input type="text" name="textfield" size="2" maxlength="2" onkeypress="return validar2(event)" /><br />
</p>
<input type="submit" > dale
</form>
</body>
</html>




aqui en el script a medida de que la persona introduce los datos voy validando que solo pueda ser entre uno y doce, pero lo ignora , esta forma la quiero usar para asegurarme que el campo meses en un formulario este entre uno y 12 , porfavor si alguien tiene alguna forma de resolver este dilema le estare eternamente agradecido
  #2 (permalink)  
Antiguo 31/01/2013, 07:19
Avatar de IsaBelM
Colaborador
 
Fecha de Ingreso: junio-2008
Mensajes: 5.032
Antigüedad: 15 años, 9 meses
Puntos: 1012
Respuesta: problema son expresiones regulares

prueba ahora
Cita:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />
<title>Validar entrada de datos</title>
<script type="text/javascript">
function validar2(e, val) {
var key = (e.keyCode) ? e.keyCode : e.charCode;
var val = val + String.fromCharCode(key);
var patron =/^([1-9]|[1][0-2])$/;
return (patron.test(val));
}
</script>
</head>
<body>
<form action="#" onSubmit="javascript:document.form.reset();" method="post">
<p><input type="text" name="textfield" size="2" maxlength="2" onkeypress="return validar2(event, this.value)" /><br />
</p>
<input type="submit" > dale
</form>
</body>
</html>
fíjate que hay que testear el valor del control y la tecla pulsada
__________________
if(ViolenciaDeGénero) {alert('MUJER ASESINADA');}
  #3 (permalink)  
Antiguo 31/01/2013, 08:10
 
Fecha de Ingreso: enero-2013
Mensajes: 38
Antigüedad: 11 años, 1 mes
Puntos: 0
Respuesta: problema son expresiones regulares

hola isabel vi la solucion gracias lo hace, pero no me permite borrar presionando back space cosa que podia hacer con linea que me corregistes del programa original , me di cuenta que si esa linea esta la expresion regular es ignorada alguna idea como permitir borrar con back space porfa
  #4 (permalink)  
Antiguo 31/01/2013, 09:17
Avatar de IsaBelM
Colaborador
 
Fecha de Ingreso: junio-2008
Mensajes: 5.032
Antigüedad: 15 años, 9 meses
Puntos: 1012
Respuesta: problema son expresiones regulares

no lo has probado bien. no te dejaría hacer un back con los evento onkeyup/down. sería recomendable que leyeras sobre los eventos del teclado
__________________
if(ViolenciaDeGénero) {alert('MUJER ASESINADA');}
  #5 (permalink)  
Antiguo 31/01/2013, 12:06
 
Fecha de Ingreso: enero-2013
Mensajes: 38
Antigüedad: 11 años, 1 mes
Puntos: 0
Respuesta: problema son expresiones regulares

disculpame pero lo ley y lo probe de nuevo y sigue sin funcionar , podrias explicarme porfavor en que estoy fallando porque te juro que lo vi todo la mañana y sigo sin ver el error , ´perdona mi falta de entendimiento Isabel
  #6 (permalink)  
Antiguo 31/01/2013, 15:00
Avatar de IsaBelM
Colaborador
 
Fecha de Ingreso: junio-2008
Mensajes: 5.032
Antigüedad: 15 años, 9 meses
Puntos: 1012
Respuesta: problema son expresiones regulares

ya por último he probado el código con la modificaciones que realicé y como ya sabía se puede hacer back.

si haces un copiar/pegar, verás que no hay nada mas que explicar aparte de lo que comenté en mis post anteriores
__________________
if(ViolenciaDeGénero) {alert('MUJER ASESINADA');}
  #7 (permalink)  
Antiguo 01/02/2013, 19:30
Avatar de danny_  
Fecha de Ingreso: septiembre-2012
Mensajes: 95
Antigüedad: 11 años, 6 meses
Puntos: 4
Respuesta: problema son expresiones regulares

A veces es más fácil darle al usuario cierta "comodidad" al insertar datos y también facilitarnos un poco el trabajo y no tener que crear código innsesario e independiente de javascript.

Puedes añadir una entrada de formulario <select></select> y dentro de ella añadir <option></option> con el número máximo de entradas que quieras darle al usuario. Por ejemplo:

Código HTML:
Ver original
  1. <!--lo puedes alargar hasta el infinito y más allá si lo deseas con un bucle for-->
  2.  
  3. </form>

Saludos!!
  #8 (permalink)  
Antiguo 02/02/2013, 06:27
Avatar de IsaBelM
Colaborador
 
Fecha de Ingreso: junio-2008
Mensajes: 5.032
Antigüedad: 15 años, 9 meses
Puntos: 1012
Respuesta: problema son expresiones regulares

aunque se use combox, se tendrá que continuar validando si es una fecha válida. el combo día tendrá 31 opciones y hay meses que no tienen 31 días
__________________
if(ViolenciaDeGénero) {alert('MUJER ASESINADA');}
  #9 (permalink)  
Antiguo 02/02/2013, 10:20
Avatar de danny_  
Fecha de Ingreso: septiembre-2012
Mensajes: 95
Antigüedad: 11 años, 6 meses
Puntos: 4
Respuesta: problema son expresiones regulares

Validar fechas, eso ya es otro mundo, sin embargo yo lo validaría especialmente desde el servidor aunque también es conveniente lo que tu dices amiga Isabel, pero me remito a las sabias palabras del señor Caricatos, "es conveniente no depender de javascript por si el usuario le da por desactivar scripts del navegador". Y no por eso digo que no se deba usar javascript, amo javascript y todo el abanico de posibilidades que nos da.

Saludos!!
  #10 (permalink)  
Antiguo 02/02/2013, 15:53
Avatar de emprear
Colaborador
 
Fecha de Ingreso: junio-2007
Ubicación: me mudé
Mensajes: 8.388
Antigüedad: 16 años, 9 meses
Puntos: 1567
Respuesta: problema son expresiones regulares

Por si puede ser útil, aqui las dos formas

php

http://foros.emprear.com/php/demo-fo...nacimiento.php

javascript (en la demo se incluye la generación dinámica de los combos)
Código Javascript:
Ver original
  1. // funciones de validación
  2. function verifica(){
  3. var campo_dia=document.getElementById('dia').value;
  4. var campo_mes=document.getElementById('mes').value;
  5. var campo_anio=document.getElementById('anio').value;
  6. if(fechaValida(campo_anio,campo_mes,campo_dia) == false){
  7. alert('Ingrese una fecha válidad, día, mes y año');
  8. return false;
  9. }else{
  10. alert('Fecha ok, procesando el formulario...');
  11. }
  12. }
  13.  
  14. function fechaValida(y,m,d){
  15. var fecha = new Date(y,m-1,d);
  16. var convertirFecha = ""+fecha.getFullYear() + (fecha.getMonth()+1) + fecha.getDate();
  17. var fechaDada = "" + y + m + d;
  18. return ( fechaDada == convertirFecha);
  19. }


http://foros.emprear.com/javascript/...esto_form.html

Saludos
__________________
La voz de las antenas va, sustituyendo a Dios.
Cuando finalice la mutación, nueva edad media habrá
S.R.
  #11 (permalink)  
Antiguo 03/02/2013, 05:37
Avatar de danny_  
Fecha de Ingreso: septiembre-2012
Mensajes: 95
Antigüedad: 11 años, 6 meses
Puntos: 4
Respuesta: problema son expresiones regulares

Buena aportación emprear, seguro será de utilidad ya que manejar fechas a veces es un poco complejo. El otro día me tope con una duda sobre como detectar con php el cambio de horario de verano o invierno. Lo veré con mas profundidad mas adelante, pero seguro esto sera de mucha ayuda para más de uno.

Un saludo!
  #12 (permalink)  
Antiguo 03/02/2013, 07:25
Avatar de emprear
Colaborador
 
Fecha de Ingreso: junio-2007
Ubicación: me mudé
Mensajes: 8.388
Antigüedad: 16 años, 9 meses
Puntos: 1567
Respuesta: problema son expresiones regulares

Cita:
Iniciado por danny_ Ver Mensaje
Buena aportación emprear, seguro será de utilidad ya que manejar fechas a veces es un poco complejo. El otro día me tope con una duda sobre como detectar con php el cambio de horario de verano o invierno. Lo veré con mas profundidad mas adelante, pero seguro esto sera de mucha ayuda para más de uno.

Un saludo!
<?php
echo date('I', time());
?>

Devuelve 1 si usa Hora de verano (DST), 0 si no

SAludos
__________________
La voz de las antenas va, sustituyendo a Dios.
Cuando finalice la mutación, nueva edad media habrá
S.R.
  #13 (permalink)  
Antiguo 03/02/2013, 08:56
Avatar de danny_  
Fecha de Ingreso: septiembre-2012
Mensajes: 95
Antigüedad: 11 años, 6 meses
Puntos: 4
Respuesta: problema son expresiones regulares

Me sirve, Gracias!

Etiquetas: expresiones, formulario, funcion, html, input, regulares, son
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 04:01.