Foros del Web » Programando para Internet » Javascript »

Dar Focus al producirse error

Estas en el tema de Dar Focus al producirse error en el foro de Javascript en Foros del Web. Hola !! estoy haciendo un cuestionario en el cual se dota al usuario de cierta cantidad de puntos. Estos tienen que ser divididos en cada ...
  #1 (permalink)  
Antiguo 25/11/2002, 11:13
 
Fecha de Ingreso: abril-2002
Mensajes: 47
Antigüedad: 22 años
Puntos: 0
Pregunta Dar Focus al producirse error

Hola !!

estoy haciendo un cuestionario en el cual se dota al usuario de cierta cantidad de puntos. Estos tienen que ser divididos en cada pregunta en funcion de lo de acuerdo que este con ellas:

ejemplo:
300 puntos
1.- Te gusta cantar? 200
2.- Te gusta bailar? 100
...
N.- Pregunta N?...

Como ya deveis de estar suponiendo necesio llevar cuenta de cada introduccion de puntos y, en el caso que se pase o inserte un caracter alfabetico, quiero que el foco vaya a ese Input text despues de mostrarse un mensaje de alerta.

Tengo echo el codigo pero no hay manera de que me funcione. Entra en un bucle y me sale todo el rato el alert().

Este es el formulario:

<form name="Questionnaire" method="post" action="">
<input name="Q1" type="text" id="Q1" value="0" size="4" maxlength="4" onBlur="javascript:CheckSum(this);">
</form>

esta es la funcion:

<script language="JavaScript">
<!--
function CheckSum(question){
if ((isNaN(Questionnaire.Q1.value))||(isNaN(Questionn aire.Q2.value))||(isNaN(Questionnaire.Q3.value))){
alert('You have not type a number');
question.focus();
}else{
var Q1=parseInt(Questionnaire.Q1.value);
var Q2=parseInt(Questionnaire.Q2.value);
var Q3=parseInt(Questionnaire.Q3.value);
result=Q1 + Q2 + Q3;
if((result>1000)){
alert("Te pasaste de puntos !!");
}
}

}
-->
</script>

tambien probe de cambiar esto:

question.focus();

por esto

Questionnaire.question.focus();

si lo hago de esta ultima forma no me entra en el bucle pero no se me situa en el foco, produce un error !!

Gracias de antemano

Xiquetam
  #2 (permalink)  
Antiguo 25/11/2002, 12:54
Avatar de Kaopectate
Colaborador
 
Fecha de Ingreso: diciembre-2001
Ubicación: Curaçao (Antillas Holandesas)
Mensajes: 3.179
Antigüedad: 22 años, 4 meses
Puntos: 38
Xiquetam, prueba esto:

Código PHP:
<html>
 <
head>
  <
script language="JavaScript">
   function 
validar(){
    var 
bOk truenTot 0;
    
with (document.Questionnaire){
     for (var 
1; (<= 3) && bOki++){
      if (
isNaN(eval("Q" String(i) + ".value"))){
       
alert("You have not type a number");
       eval(
"Q" String(i) + ".focus()");
       
bOk false;
      } else 
nTot += eval("parseInt(Q" String(i) + ".value)");
      if (
bOk && (nTot 1000)){
       
alert("Te pasaste de puntos !!");
       
bOk false;    
      }
     }
    }
    return 
bOk;
   }
  
</script>
 </head>
 <body>
  <form name="Questionnaire">
   Primero:
   <input type="text" name="Q1">
   <br>
   Segundo:
   <input type="text" name="Q2">
   <br>
   Tercero:
   <input type="text" name="Q3">
   <br>
   <input type="button" onclick="validar()" value="Validar">
  </form>
 </body>
</html> 
Suerte.
  #3 (permalink)  
Antiguo 26/11/2002, 04:09
 
Fecha de Ingreso: abril-2002
Mensajes: 47
Antigüedad: 22 años
Puntos: 0
Muchas gracias Kaopectate !!

De todas formas me interesa que el usuario no se pueda mover del campo de texto hasta que introduzca un numero. Pero, supongo que bastara con mover la llamada a la funcion en cada input, verdad?

Xiquetam
  #4 (permalink)  
Antiguo 26/11/2002, 07:33
Avatar de Kaopectate
Colaborador
 
Fecha de Ingreso: diciembre-2001
Ubicación: Curaçao (Antillas Holandesas)
Mensajes: 3.179
Antigüedad: 22 años, 4 meses
Puntos: 38
Yo haría entonces dos funciones, una que valide el campo y otra la suma. De cualquier modo prueba a mover la función y si tienes problemas la ajustamos.

Saludos.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 22:44.