Foros del Web » Programando para Internet » Javascript »

Validar input radio y contar los seleccionados

Estas en el tema de Validar input radio y contar los seleccionados en el foro de Javascript en Foros del Web. Hola, quiero obligatoriamente se seleccione una opción "input radio" en cada pregunta y ademas que rellene los cajones de texto, los input text funcionan bien ...
  #1 (permalink)  
Antiguo 09/02/2014, 09:53
 
Fecha de Ingreso: enero-2010
Mensajes: 373
Antigüedad: 9 años, 7 meses
Puntos: 5
Validar input radio y contar los seleccionados

Hola, quiero obligatoriamente se seleccione una opción "input radio" en cada pregunta
y ademas que rellene los cajones de texto, los input text funcionan bien y el de radio no consigo sumar los que ha seleccionado:

Cita:
<script language="JavaScript">
//funcion que es llamada en el evento submit del formulario
function validar(){
//obtener el formulario para utilizarlo en la validacion
var frmFormulario=document.forms['test'];
//contar la cantidad de elementos que contiene el formulario
var iElementos=frmFormulario.elements.length;

//recorrer todos los elementos del formulario
for(var iCont=0;iCont<iElementos;iCont++){
//obtener el elemento actual para utilizarlo
var textos=frmFormulario.elements[iCont];

if(textos.type=='text' || textos.type=='radio'){


var num=0;
if (
trim(textos.value)=='Escriba la pregunta'
|| trim(textos.value)==''
|| trim(textos.value)=='Respuesta a'
|| trim(textos.value)=='Respuesta b'
|| trim(textos.value)=='Respuesta c'
|| trim(textos.value)=='Escriba una explicación'


){
//mostramos un mensaje al usuario
alert('Por favor, complete todos los campos del formulario.');
//enfocamos el campo que exta vacio
textos.focus();
//borramos el contenido del campo (podria contener espacios en blanco)
textos.value='';
//devolvemos false para que el formulario no sea procesado
return false;
}

else if ((textos.checked)){
var num = num+1;


if(num<3) {
alert('no selecciono 3 campos radio boton');

return false;


}}}}


if(!confirm('¿Desea almacenar los datos?')){
//el usuario indica que no desea almacenar los datos
//entonces devolvemos false para que el formulario no sea procesado
return false;
}
}

//funcion para eliminar los espacios al inicio y final de cualquier cadena
//en otros lenguajes se conoce como "trim", JavaScript no cuenta con ella
function trim(strTexto){
//eliminamos los espacios iniciales y finales, con expresiones regulares
return strTexto.replace(/^\s+/g,'').replace(/\s+$/g,'');
}
</script>
La parte que puse en rojo es la que no logro que funcione como yo quiero.

A ver si me podeis ayudar un poco, saludos.
  #2 (permalink)  
Antiguo 11/02/2014, 11:07
Avatar de NSD
NSD
Colaborador
 
Fecha de Ingreso: mayo-2012
Ubicación: Somewhere
Mensajes: 1.332
Antigüedad: 7 años, 3 meses
Puntos: 319
Respuesta: Validar input radio y contar los seleccionados

Hola, prueba a sacar esto:
Código Javascript:
Ver original
  1. if(num<3) {
  2. alert('no selecciono 3 campos radio boton');
fuera del for.

sin el html del form me pierdo un poco, podrias al menos explicar que es lo hace actualmente, y como deberia funcionar.
__________________
Maratón de desafíos PHP Junio - Agosto 2015 en FDW | Reglamento - Desafios
  #3 (permalink)  
Antiguo 11/02/2014, 12:57
 
Fecha de Ingreso: enero-2010
Mensajes: 373
Antigüedad: 9 años, 7 meses
Puntos: 5
Respuesta: Validar input radio y contar los seleccionados

No pasa nada si lo sacas del for, antes estaba asi.

Ahora funciona, lo que pasa esque no suma, es decir aunque selecciones un boton o selecciones tres, solo te suma el primero,
Y yo quiero que para poder procesar el formulario hayas tenido que seleccionar los tres no solo uno, que es como funciona ahora.



Mira el html es este:
Cita:
<?
$preguntas=0;
while($preguntas++ < 3 ) {



?>

<div >
<span ><strong><?=$preguntas?>.</strong></span><span class="preg_text"><input type="text" style="width:973px;" name="Pregunta<?=$id++?>" onfocus="this.value = (this.value == 'Escriba la pregunta) ? '' : this.value" value='Escriba la pregunta'/></span><br />

<div style="margin-top:5px; ">
<? print "<input type=\"radio\" name=\"rregunta".$preguntas."\" value=\"a\" />\n";
?>
<strong>a)</strong> <input type="text" name="Pregunta<?=$id++?>" style="width:530px;" onfocus="this.value = (this.value == 'Respuesta a') ? '' : this.value" value='Respuesta a'/>

</div>

<div style="margin-top:5px; " >
<? print "<input type=\"radio\" name=\"rregunta".$preguntas."\" value=\"b\" />\n";
?><strong>b)</strong><input type="text" name="Pregunta<?=$id++?>" style="width:530px; margin-left:3px;" onfocus="this.value = (this.value == 'Respuesta b') ? '' : this.value" value='Respuesta b'/>

</div>


<div style="margin-top:5px; " >
<? print "<input type=\"radio\" name=\"rregunta".$preguntas."\" value=\"c\" />\n";
?><strong>c)</strong> <input type="text" name="Pregunta<?=$id++?>" style="width:530px;" onfocus="this.value = (this.value == 'Respuesta c') ? '' : this.value" value='Respuesta c'/>
</div>

<div style="margin-top:5px; margin-left:5px; " >
<textarea type="text" name="Pregunta<?=$id++?>" style="width:404px; height:70px;" onfocus="this.value = (this.value == '>Escriba una explicacion') ? '' : this.value" />Escriba una explicación</textarea>
</div>



</div><!--Fin div -->

<?

}//*************** Fin while
?>

Etiquetas: formulario, funcion, input, radio, seleccionados
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 09:15.