Obligaciones y restricciones en un campo de texto del formulario


([N1] practicasvelneot2) #1

Muy buenas a todos,

Me gustaría que pudierais ayudarme con un asunto.

Estoy realizando una aplicación sencilla en la que se deben de registrar una serie de personas para luego listarlas y gestionar sus datos.

Uno de los campos que se encuentra en el formulario es e-mail. Mi objetivo es que la persona que está rellenando el formulario deba de escribir su e-mail pero atendiendo a una serie de restricciones.

Quiero obligar a la persona que lo escribe a que tenga que poner una dirección correcta, es decir, que no pueda poner como e-mail algo como “pepitogrillo”, sino obligar a que ponga "pepitogrillo@algo.com".

El objetivo es poder configurar dicho campo de texto para que aparezca el símbolo @ por defecto, y que le obligue a escribir algo por delante del @ y algo por detrás, acabando la sentencia con “.” y el dominio que sea (.com, .es, etc.), o en tal caso, aunque no apareciera nada por defecto en el cuadro de texto, que cuando la persona se registre, si lo hace mal, le salte un aviso tipo “debes de escribir una dirección de correo válida tipo user@example.com”.

No sé si he conseguido explicarme bien. Ando un poco desesperado buscando por foros y documentación algo que me dé una pista pero no localizo nada.

Muchas gracias por la ayuda!!


([N1] wikan) #2

Podrías usar las máscaras de los campos alfabéticos, aunque quizás el camino mas corto es validar el contenido del campo con una expresión regular.
Para validar emails hay miles por internet.


([N1] practicasvelneot2) #3

Entiendo lo de usar expresiones regulares, pero de hacerlo de este modo donde tendría que escribirla? En el campo fórmula del campo de texto donde quiero que pongan el correo?

Y en qué lenguaje debería de escribirlo, PHP, C?

Muchas gracias por responder tan rapido jeje, asi da gusto meterse en este foro


([N1] wikan) #4

Yo lo tengo de esta manera para los NIF por ejemplo.
En un editor de fórmulas, cambias el lenguaje a javascript


(/([a-z]{1})?([\d]{8})([a-z]{1})$/gi).test( theRegister.fieldToString("NIF") ) == false

Esto lo tengo en la fórmula del if y entra al if si la expresión regular no se cumple.

Sería lo mismo para el campo email, lanzas un evento despues de perder el foco por ejemplo y válidas que el formato es correcto.



([N1] practicasvelneot2) #5

Y todas estas fórmulas las introduces supongo en el campo fórmulas del campo donde quiero que pongan el email cierto? Es que no me queda muy claro si en ese campo se puede introducir código o solamente operaciones matemáticas.

Muchas gracias por la ayuda y disculpame pero soy nuevo y me faltan algunos conceptos del programa por entender


([N1] wikan) #6

-No, en el edit asignas el campo tal cual
-Luego creas un evento dónde evalúas si el valor del campo es el correcto, usando por ejemplo las expresiones regulares mediante el editor de fórmulas en, lenguaje javascript
-Creas una conexión de evento sobre el control del formulario, por ejemplo en pierde foco.

Dentro del evento verificas que el valor introducido se corresponde con un email, en caso contrario, mandas un mensaje por ejemplo.


([N1] practicasvelneot2) #7

Ya lo he conseguido hacer! Muchas gracias por la ayuda porque me ha servido de mucho.

Te voy a hacer una ultima preguntilla, porque una vez que meto las sentencias en el manejador, ejecuto el programa y la intención es que si algo del formulario no está bien contestado, da un mensaje de error.

El problema es que me sale el mensaje de error una sola vez, pero si no se modifica el formulario y se le vuelve a dar a aceptar se lo come.
He leído que la gente hace bucles, pero las sentencias que veo son if, if-else y for. ¿Hay alguna forma de hacer un tipo de while con las sentencias que se proporcionan?

Y me pasa una cosa muy curiosa, cuando le pido verificar en nombre o el apellido, tengo puesta la siguiente función:

function isValidName(name)
{
return /^[A-Za-z]{2,}/.test(name);
}
!isValidName(theRegister.fieldToString(“NOMBRE”));

Cuando introduzco por ejemplo: Daniel, o daniel, todo va bien. Si meto 123Daniel me da error, pero si meto Daniel123 se lo traga y no entiendo por qué, puesto que en mi expresión regular se especifica que sólamente letras.

En cuanto a lo de los bucles, se pueden hacer dentro de la función en Javascript que creo para la expresión regular? O debe de ser fuera combinando alguna serie de funciones proporcionadas por Velneo?

Sé que la duda es algo tediosa pero espero que podáis entenderme.

Muchas gracias! =D


([N1] wikan) #8

Buenas, si has usado el trozo de código que te pase es normal que te salga solo un mensaje, ya que tengo puesto un “Finalizar proceso”
Es decir, si hay error, muestra el mensaje y no sigue validando el resto de campos, si quieres lo quitas y te analizará todos los campos

El otro punto es que te falta el modificado “g” en la expresión
/^[A-Za-z]{2,}/g.test(name)

Si no solo evaluas la primera aparición, por eso:
123Daniel: es error, los dos primeros ya hace que falle
Daniel123: es bueno por que las dos primeras posiciones cumplen la expresión