JavaScript - Como saber que en un campo se ingreso un arroba?

 
Vista:
sin imagen de perfil
Val: 1
Ha aumentado su posición en 21 puestos en JavaScript (en relación al último mes)
Gráfica de JavaScript

Como saber que en un campo se ingreso un arroba?

Publicado por Juliana (1 intervención) el 16/08/2019 06:29:08
Hola!!!! Tengo que hacer un trabajo en donde tengo que verificar que el campo de texto "email" contenga un @.
HTML:
1
<input type="text" id="email">
Intente con este código, pero no me reconoce cuando escribo el arroba. No sé si es porque hice mal el código o porque js reconoce el arroba de otra manera. Gracias de antemano.
JS:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
function Validar(){
var email = document.getElementById('email');
	var cont=0;
	for (var i = 0, j = email.length; i < j; i++) {
 
	 if(email[i] == "@"){
	 cont++;
	   }
	}if(cont == 0){
	alert('Ingrese un email valido.');
	return false;
	}
	else{
	return true;
}
}
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de joel
Val: 3.506
Oro
Ha mantenido su posición en JavaScript (en relación al último mes)
Gráfica de JavaScript

Como saber que en un campo se ingreso un arroba?

Publicado por joel (895 intervenciones) el 16/08/2019 08:22:43
Hola Juliana, en tu código te has dejado de coger el valor del campo email con el value... algo así:
1
var email = document.getElementById('email').value;

De todas maneras, en tu código si un usuario pusiera dos arrobas, también lo darías por bueno, al igual que si no pone ningún punto o únicamente una arroba.
Te recomiendo utilizar una expresión regular...
https://www.lawebdelprogramador.com/codigo/JavaScript/1891-Validar-una-direccion-de-correo.html
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 59
Ha aumentado su posición en 2 puestos en JavaScript (en relación al último mes)
Gráfica de JavaScript

Como saber que en un campo se ingreso un arroba?

Publicado por luis (22 intervenciones) el 26/08/2019 19:34:27
Para comprobar si hay varias arrobas o cualquier otra cadena de texto podemos utilizar un bucle contador utilizando el operador "charAt()"

1
2
3
4
5
6
7
8
9
10
11
contador=0;
function contararrobas(){
contenido=f1.correo.value;
 
for(i=0;i<300;i++)
 
if(contenido.charAt(i)=="@"){contador++}
 
alert('el numero de arrobas es '+contador)
 
}

He puesto un límite de 300 caracteres que aunque es excesivo evitará que te quedes corto. La función te indicará con una alerta el número de veces que ha localizado el carácter arroba.

La página completa sería así:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
<html>
 
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<title>Pagina nueva 1</title>
</head>
<script language=javascript>
 
contador=0;
function contararrobas(){
contenido=f1.correo.value;
 
for(i=0;i<300;i++)
 
if(contenido.charAt(i)=="@"){contador++}
 
alert('el numero de arrobas es '+contador)
 
}
</script>
<body ><form name=f1>
 
	<input type="text" name="correo" size="20">&nbsp;
	<input type="button" value="comprobar" onclick="contararrobas()"></form>
 
 
</body>
 
</html>
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 59
Ha aumentado su posición en 2 puestos en JavaScript (en relación al último mes)
Gráfica de JavaScript

Como saber que en un campo se ingreso un arroba?

Publicado por luis (22 intervenciones) el 26/08/2019 17:09:46
Hola amigos, como siempre observo que os complicáis en exceso.

La solución es mucho más fácil de lo que ambos planteáis.

Veamos.

Hay que empezar por crear un formulario, donde incluiremos un campo de entrada tipo "text" para que el usuario pueda introducir el email:

<input type="text" name="correo" size="20">

Y por supuesto un botón de confirmación, que ejecutará la función que realice la comprobación:

<input type="button" value="comprobar" onclick="comprobarvalor()">

La función comprobarvalor() será la encargada de comprobar si el texto introducido contiene o no el signo "@". Nos vendrá de perlas el operador indexOf(), que devuelve la posición del carácter o cadena de texto incluida entre paréntesis. En este caso será la arroba

indexOf("@")

Este operador devuelve -1 si no localiza el contenido indicado, luego será muy fácil averiguar su presencia con un simple condicional.

El código completo quedaría según se expone a continuación. Si hacéis un copia pega en un txt y luego lo renombráis con la extensión htm podréis ejecutarlo:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
<html>
 
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<title>Pagina nueva 1</title>
</head>
<script language=javascript>
 
function comprobarvalor(){
 
contenido=f1.correo.value;
 
if(contenido.indexOf("@")==-1){alert('el email introducido no es válido')}
 
 
}
 
 
</script>
<body ><form name=f1>
 
	<input type="text" name="correo" size="20">&nbsp;
	<input type="button" value="comprobar" onclick="comprobarvalor()"></form>
 
 
</body>
 
</html>
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
-1
Comentar
Imágen de perfil de joel
Val: 3.506
Oro
Ha mantenido su posición en JavaScript (en relación al último mes)
Gráfica de JavaScript

Como saber que en un campo se ingreso un arroba?

Publicado por joel (895 intervenciones) el 26/08/2019 18:27:03
Hola Luis, en tu código, únicamente validas que tenga una arroba... pero si el usuario pone 2 arrobas? o no pone un punto después de la arroba? o si pone un # o una \ o una / o una....?

Tienes que validar mas cosas que no solo una arroba.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 59
Ha aumentado su posición en 2 puestos en JavaScript (en relación al último mes)
Gráfica de JavaScript

Como saber que en un campo se ingreso un arroba?

Publicado por luis (22 intervenciones) el 26/08/2019 19:40:38
Para el caso que ponga varias arrobas ya he puesto la respuesta a joel. Si queremos complicar la cosa y saber qué pasa si ha puesto un punto después de la arroba pues no tienes más que sustituir la siguiente línea

if(contenido.charAt(i)=="@."){contador++}

Y si pone cualquier otro caracter pues creas tantos bucles como creas precisos, junto con tantos contadores como sean necesarios:

if(contenido.charAt(i)=="/"){contador1++}
if(contenido.charAt(i)=="#"){contador2++}
if(contenido.charAt(i)=="$"){contador3++}

y así sucesivamente. Todos ellos precedidos con el generador de bucle for(i=0;i<300;i++)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
-1
Comentar
Imágen de perfil de joel
Val: 3.506
Oro
Ha mantenido su posición en JavaScript (en relación al último mes)
Gráfica de JavaScript

Como saber que en un campo se ingreso un arroba?

Publicado por joel (895 intervenciones) el 26/08/2019 22:21:23
Luis, no crees que es mejor utilizar una expresión regular y todo el control queda en una sola linea y no te olvidas de ningún carácter?

Con el tema del punto después de la arroba, quería decir al punto que separa el dominio de la extensión (@hotmail.com) que tiene que haber por lo menos uno obligatoriamente.

Tu código daría por correcto estos correos:
casa@hotmail
casa@@hotmail.com
@hotmail.com
[email protected]
....
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar