JavaScript - Un campo me valida, pero el otro NO ?¿?

 
Vista:
Imágen de perfil de Albert
Val: 65
Ha aumentado 1 puesto en JavaScript (en relación al último mes)
Gráfica de JavaScript

Un campo me valida, pero el otro NO ?¿?

Publicado por Albert (20 intervenciones) el 02/01/2021 10:56:25
Buenos días y buen año:

Tengo el siguiente código de validación de dos campos en mi formulario:

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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
// ---------- Función para requerir sólo texto en nombreLeft / nombreRight -------------------- //
 
function soloLetras(e) {
 
    var key = e.keyCode || e.which,
    tecla = String.fromCharCode(key).toLowerCase(),
    letras = " áéíóúabcdefghijklmnñopqrstuvwxyzÁÉÍÓÚäëïöüÄËÏÖÜàèìòùÀÈÌÒÙ",
    especiales = [8, 37, 39, 46],
    tecla_especial = false;
 
    for (var i in especiales) {
        if (key == especiales[i]) {
            tecla_especial = true;
            break;
            }
        }
 
    if (letras.indexOf(tecla) == -1 && !tecla_especial) {
        return false;
    }
}
 
// -- Función para aceptar espacios -- //
function valeft(){
 
    var val = document.getElementById("nombreLeft").value;
    var tam = val.length;
 
        for(i=0;i<tam;i++){
            if(!isNaN(val[i]) && val[i] != " ")
            document.getElementById("nombreLeft").value='';
            }
}
 
// -- Función para aceptar espacios -- //
function valright(){
 
    var val = document.getElementById("nombreRight").value;
    var tam = val.length;
 
        for(i=0;i<tam;i++){
            if(!isNaN(val[i]) && val[i] != " ")
            document.getElementById("nombreRight").value='';
            }
}

Y la llamada a la función correspondiente desde el formulario:

1
<input id="nombreLeft" name="nombreLeft" type="text" size="25" onkeypress="return sololetras(e)" onblur="valeft()">Nombre de Ella/&Eacute;l:&nbsp;<input id="nombreRight" name="nombreRight" type="text" size="25" onkeypress="return sololetras(e)" onblur="valright()">

Pues bien, la función valeft me valida correctamente, pero valright no me deja poner espacios como por ejemplo un nombre compuesto como María Jose, me lo borra y me muestra el mensaje de que se debe completar el campo. ¿Alguien puede ver el fallo?? ... llevo tiempo intentando averiguar que puede fallar!!

Gracias de antemano y un saludo
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 Alejandro
Val: 1.448
Plata
Ha mantenido su posición en JavaScript (en relación al último mes)
Gráfica de JavaScript

Un campo me valida, pero el otro NO ?¿?

Publicado por Alejandro (355 intervenciones) el 05/01/2021 18:06:52
Tu código no valida nada correcto:
El nombre de la función es "soloLetras", no "sololetras"
Estas pasando un valor indefinido "sololetras(e)" o por lo menos en Firefox no funciona, debes buscar compatibilidad soloLetras(event)

Por otra parte las funciones valeft y valright ademas de duplicar código no le veo utilidad.
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 Albert
Val: 65
Ha aumentado 1 puesto en JavaScript (en relación al último mes)
Gráfica de JavaScript

Un campo me valida, pero el otro NO ?¿?

Publicado por Albert (20 intervenciones) el 06/01/2021 00:18:24
Muchas Gracias Alejandro.

Lo sé, soy consciente, de hecho la compatibilidad con otros Navegadores es cuenta pendiente. Lo que quiero hacer en primera estancia es la primera fase o la funcionalidad de la web (como el esqueleto) para crear un primer documento donde apoyarme después en todos los detalles para dejarla en condiciones.

El javascript es un primer filtro y como sólo hay dos formularios muy sencillos, no me importa duplicar la misma validación en dos campos.

Todo el grueso de validaciones, sobretodo en carácteres extraños y demás, lo haré a posteriori con php.

Gracias y un saludo!!
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