Ver Mensaje Individual
  #31 (permalink)  
Antiguo 05/11/2003, 11:45
Avatar de KarlanKas
KarlanKas
Moderador extraterrestre
 
Fecha de Ingreso: diciembre-2001
Ubicación: Madrid
Mensajes: 6.987
Antigüedad: 23 años
Puntos: 61
Tienes razón, SuperMundo. El sistema de manejo de campos era lo único que quedaba un poco dificil para los menos habituados a los scripts. Ya lo he resuelto con lo siguiente:

Como ves en el código (está más abajo), existen unas variables editables que son:

var palabraMasCorta=2;

Dices a partir de qué cantidad de letras la palabra es válida.

var maximoDeVocales=2;

Aquí indicas la cantidad máxima de vocales que pueden ir juntas

var maximoDeConsonantes=2;

Aquí lo mismo que en la anterior pero con las consonantes

var nombreDelCampo="pepe";

Aquí se dice cual es el campo del nombre a comprobar (si en la llamada a la función no se dice otra cosa)

He depurado el código, ya no es el inicial, ni los siguientes. Lo he optimizado un poquito y lo he reducido de tamaño. Para ejecutarlo no hay más que llamar a la función poniendo entre los paréntesis el nombre del campo a comprobar entrecomillado. Si no se pone nada comprobará el que tiene por defecto. Si no encuentra el que se le especifica lo advertirá con un mensaje de alerta.

la forma de llamarlo es sencillo en tu caso:

comprobarCoherencia("name");

El código de ejemplo es el que sigue. Y en el siguiente mensaje pondré tu formulario con los cambios debidos.

Código PHP:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<
html>
<
head>
    <
title>Coherencia</title>
    <
style>
    
input{
    
font:normal 10px/10px verdana;
    
color:navy;
    
border:solid 1px black;
    
width:300px;
    }
    
form{    font:bold 10px/10px verdana;
    
color:black}
    </
style>
<
script>
//------EDITABLE-----------
var palabraMasCorta=2;
var 
maximoDeVocales=2;
var 
maximoDeConsonantes=2;
var 
nombreDelCampo="pepe";
//---------------------------

var palabra=new Array();
var 
maximoconsonante=new Array();
var 
maximovocal=new Array();
var 
laFrase="";
var 
vocales="AEIOUÁÉÍÓÚ";
var 
consonantes="BCDFGHJKLMNÑPQRSTVWXYZ";
var 
mal=0;
var 
malmal=0;
var 
espacio=0;
var 
campo

function comprobarCoherencia(unCampo){
if(
unCampo){nombreDelCampo=unCampo;}

mal=0;
malmal=0;
espacio=0;

//localizar el campo que es

for (a=0;a<document.forms[0].elements.length;a++){
if(
document.forms[0].elements[a].name==nombreDelCampo){
campo=document.forms[0].elements[a];
break;
}
}
if(
a==document.forms[0].elements.length){
alert("No existe campo llamado "+nombreDelCampo+"\nCompruebe que coinciden mayusculas y minúsculas");
return 
false}

frase=campo.value;
frase=frase.toUpperCase();

for (
a=0;a<frase.length;a++){
    
letra=frase.charAt(a);
    if(
letra==" "){espacio+=1
    
if(espacio<2){
        
laFrase+=letra;
        }}
    else{
    
//Quitar los caracteres extraños y poner las primeras letras de cada
// palabra en mayusculas
    
    
if(isNaN(letra) && letra.toUpperCase()!=letra.toLowerCase()){
    
espacio=0;
    
laFrase+=(laFrase.charAt(laFrase.length-1)==" " ||a==0)?letra:letra.toLowerCase();
    }
    }
    }
// Quitar los espacios de más

if(laFrase.substring(laFrase.length-1)==" "){
laFrase=laFrase.substring(0,laFrase.length-1);
}
if(
laFrase.charAt(0)==" "){
laFrase=laFrase.substring(1,laFrase.length);
}


//sustituir lo introducido por el resultado de quitar los espacios de más
// y los caracteres extraños

campo.value=laFrase;
if(
laFrase==""){return false;}

//Separar por palabras la frase
frase=laFrase;
laFrase="";

palabra=frase.split(" ");

//Comprobar la coherencia y que no haya
//más consonantes y vocales juntas del 
//máximo permitido

for (b=0;b<palabra.length;b++){
maximoconsonante[b]=0;
maximovocal[b]=0;
control=0;
consonante=0;
vocal=0;

for(
a=0;a<palabra[b].length;a++){
    
letra=palabra[b].charAt(a).toUpperCase();
    
    if (
vocales.indexOf(letra)>-1){
        
consonante=0
        vocal
+=1
        
if(vocal>maximovocal[b]){
            
maximovocal[b]=vocal;
        }
        
    }

    if(
consonantes.indexOf(letra)>-1){
        
vocal=0
        consonante
+=1
        
if(consonante>maximoconsonante[b]){
            
maximoconsonante[b]=consonante;
        }
    
    }

}
}

// Marcar los errores

for (a=0;a<palabra.length;a++){
b=a+1;
Mensaje="Palabra número " ": "+palabra[a];

if (
maximoconsonante[a]>maximoDeConsonantes){
Mensaje+="\nTiene mas de "+maximoDeConsonantes+" consonantes juntas";
mal=1;malmal=1
}
if(
maximovocal[a]>maximoDeVocales){
Mensaje+="\nTiene mas de "maximoDeVocales" vocales juntas";
mal=1;malmal=1
}

if(
palabra[a].length<=palabraMasCorta){
Mensaje+="\nEs demasiado corta";
mal=1;malmal=1
}
if(
mal==1){alert(Mensaje);}
mal=0;

}
if(
malmal==0){document.forms[0].submit()}
}

</script>
</head>

<body>

<form action='javascript:alert("Enviado!")' >
Nombre: <input name="peepe" onfocus="this.value=''" type="text"><br><br>
Nombre: <input name="juan" onfocus="this.value=''" type="text"><br><br>
Nombre: <input name="pepe" onfocus="this.value=''" type="text"><br><br>
<input 
type="button" 
Value="Comprobar consistencia" 
onclick="comprobarCoherencia('juan')">
</form>
</body>
</html> 
__________________
Cómo escribir

No hay pregunta tonta, sino tonto que quiere seguir en la ignorancia.

Última edición por KarlanKas; 05/11/2003 a las 12:08