P.-Cómo saber si han rellenado un input con varios caracteres iguales?
R.-Por medio de este script:
Tema: Formularios Código PHP:
<html>
<head>
<title>Contando letritas</title>
<script>
//Script original de KarlanKas para Forosdelweb.com
record=0;
igual=1;
var letraRecord
var b=0
var letra=""
function comprobar(esto){
for (a=1;a<esto.length;a++){
if (esto.charAt(a)==esto.charAt(b)){
igual=igual+1;
letra=esto.charAt(a);}
else{
if(igual>record){record=igual;letraRecord=letra}
igual=1
}
b=a
}
if(igual>record){record=igual;letraRecord=letra}
if (record>1){alert("La letra que más se repite es la "+letraRecord+" que aparece seguida "+record+" veces.")}
else {alert("Ninguna letra se repite seguida");}
}
</script>
</head>
<body>
<form action="javascript:alert('HOLAA!!')"
method="post"
name="formuario"
id="formuario">
<input type="text"
name="caja"
size="130"
onblur="comprobar(this.value)">
</form>
</body>
</html>
Dernuke propone una versión usando expresiones regulares y propone algún variante:
Código:
<html>
<head>
<title>Contando letritas</title>
<script>
// por derkeNuke
function comprobar(str) {
var res=str.match(/([a-z]){1}\1+/gi);
mensaje="Las repeticiones de letras seguidas son: \r";
for(a=0; a<res.length; a++)
mensaje+="- "+res[a].substring(0,1)+" "+res[a].length+" veces.\r";
alert(mensaje);
// si queremos ordenar el resultado de mayor a menor repeticion:
res.sort( function(a,b) {
if(a.length>b.length) return -1;
else if(a.length==b.length) return 0;
else return 1;
} );
mensaje="Las repeticiones de letras seguidas ya ordenadas son: \r";
for(a=0; a<res.length; a++)
mensaje+="- "+res[a].substring(0,1)+" "+res[a].length+" veces.\r";
alert(mensaje);
}
</script>
</head>
<body>
<form action="javascript:alert('HOLAA!!')"
method="post"
name="formuario"
id="formuario">
<input type="text"
name="caja"
size="130"
value="eqewwqFaaaasscccFasaeqw"
onblur="comprobar(this.value)">
</form>
</body>
</html>