Foros del Web » Programando para Internet » Javascript »

Filtrar formularios

Estas en el tema de Filtrar formularios en el foro de Javascript en Foros del Web. Me dijeron que el problema es Javascript, asi que lo expongo a continuacion, espero pueda expresarme bien. Ya hice algo, y necesito conseguir otra cosa ...
  #1 (permalink)  
Antiguo 30/09/2009, 12:32
Avatar de loncho_rojas
Colaborador
 
Fecha de Ingreso: octubre-2008
Ubicación: En el mejor lugar del mundo
Mensajes: 2.704
Antigüedad: 15 años, 6 meses
Puntos: 175
Filtrar formularios

Me dijeron que el problema es Javascript, asi que lo expongo a continuacion, espero pueda expresarme bien.

Ya hice algo, y necesito conseguir otra cosa mas..

LO QUE YA HICE
Generar una mini funcion sencilla que me permita bloquear ciertos campos mediante unos radios.

Es decir, tengo 3 campos de form, 1 input y 2 combobox...

Cuando selecciono uno el radio 1, me habilita el campo Input y el combobox1, y deshabilita el combobox2.

Cuando selecciono uno el radio 2, me habilita el campo Input y el combobox2, y deshabilita el combobox1.

Hasta aca, como dirian, "todo chevere", pero esos campor serán enviados a un procesador..

lo que necesito tal vez no sea muy complicado, o tal vez si:

Problema

Quiero que al seleccionar uno de los radios, a parte de habilitarme los 2 necesarios y bloquearme uno de ellos, que solo envie la info dentro de los 2 campos habilitados, y el que esta deshabilitado me lo ignore.

Esto porque al enviar el form al procesador, por mas que esté deshabilitado uno de ellos, igual envia la info, y no quiero que eso pase..

les dejo copiado el html y javascript que use para ver si se entiende mas:

Código HTML:
<html>
	<head>

		<title>Buscar Avanzado</title>

		<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">

	</head>
     <script>
		function bloqueados(){
				
				document.form1.nombre.disabled = true
				document.form1.ciudad.disabled = true
				document.form1.edad.disabled = true
				}
		
		function bloquea() {
		
			if (document.form1.radio[0].checked) {
				document.form1.nombre.disabled = false
				document.form1.ciudad.disabled = false
				document.form1.edad.disabled = true
				document.form1.edad[document.form1.edad.selectedIndex].value=""
				
			}

			if (document.form1.radio[1].checked) {
			document.form1.nombre.disabled = false
			document.form1.edad.disabled = false
			document.form1.ciudad.disabled = true
			document.form1.ciudad[document.form1.ciudad.selectedIndex].value=""
			}
}
</script>

<body onLoad="bloqueados();">
<p>Seleccione una combinaci&oacute;n.
<p>Obs: Solo puede elegir una de ellas para filtrar los datos
    
   
    
<form name="form1" method="post" action="mostrarResultados.php">
  <table width="558" border="0" align="center" cellpadding="0" cellspacing="0">
          <tr>
            <td>Combinar solo</td>
            <td>&nbsp;</td>
            <td><input name="radio" type="radio" value="" onClick="bloquea()">
            nombre + ciudad            </td>
            <td>&nbsp;</td>
            <td><input name="radio" type="radio" value="" onClick="bloquea()">
              Nombre +Edad</td>
            <td>&nbsp;</td>
          </tr>
          <tr>
            <td>&nbsp;</td>
            <td>&nbsp;</td>
            <td>&nbsp;</td>
            <td>&nbsp;</td>
            <td>&nbsp;</td>
            <td>&nbsp;</td>
          </tr>
          <tr>
            <td bgcolor="#CCCCCC">&nbsp;</td>
            <td bgcolor="#CCCCCC">&nbsp;</td>
            <td bgcolor="#CCCCCC">&nbsp;</td>
            <td bgcolor="#CCCCCC">&nbsp;</td>
            <td bgcolor="#CCCCCC">&nbsp;</td>
            <td>&nbsp;</td>
          </tr>
          <tr>
            <td width="144" bgcolor="#CCCCCC"><span class="style10">Nombre:</span>
            <input name="nombre" type="text" id="nombre"></td>
            <td width="21" bgcolor="#CCCCCC">&nbsp;</td>
            <td width="187" bgcolor="#CCCCCC">+ Ciudad:
              <select name="ciudad" id="ciudad">
                <option value="0">-- Seleccione un Ciudad --</option>
                <option value="1">Ciudad 1</option>
                <option value="2">Ciudad 2</option>
              </select></td>
            <td width="37" bgcolor="#CCCCCC">&nbsp;</td>
            <td width="158" bgcolor="#CCCCCC">+Edad:
              <select name="edad" id="edad">
                <option value="0">-- Seleccione edad --</option>
                <option value="1">Edad 17</option>
                <option value="2">Edad 18</option>
                <option value="3">Edad 19</option>
                <option value="4">Edad 20</option>
              </select></td>
            <td width="137">&nbsp;</td>
          </tr>
              
          <tr>
            <td bgcolor="#CCCCCC">&nbsp;</td>
            <td bgcolor="#CCCCCC">&nbsp;</td>
            <td bgcolor="#CCCCCC">&nbsp;</td>
            <td bgcolor="#CCCCCC">&nbsp;</td>
            <td bgcolor="#CCCCCC">&nbsp;</td>
            <td>&nbsp;</td>
          </tr>
          <tr>
            <td width="144" bgcolor="#CCCCCC">&nbsp;</td>
            <td width="21" bgcolor="#CCCCCC">&nbsp;</td>
            <td width="187" bgcolor="#CCCCCC">&nbsp;</td>
            <td width="37" bgcolor="#CCCCCC">&nbsp;</td>
            <td width="158" bgcolor="#CCCCCC"><input name="Submit" type="submit" value="encontrar"></td>
            <td width="137">&nbsp;</td>
          </tr>
  </table>
</form>
      
      </body>
</html> 

Zenkiu, si hay alguna duda me lo preguntan asi lo explico mejor, espero una mano, puesto que no soy muy fino con Javascript, mas que lo basico
__________________
Ayudo con lo que puedo en el foro, y solo en el foro.. NO MENSAJES PRIVADOS.. NO EMAILS NI SKYPE u OTROS.

Antes de hacer un TOPICO piensa si puedes hallarlo en Google o en el Buscador del Foro...
  #2 (permalink)  
Antiguo 30/09/2009, 14:04
 
Fecha de Ingreso: septiembre-2009
Mensajes: 6
Antigüedad: 14 años, 7 meses
Puntos: 0
Respuesta: Filtrar formularios

Hola Loncho.

Mira, la verdad es que no entiendo a qué te refieres con "enviar la info al procesador"; me imagino que sea enviar los datos del campo al servidor que recibe el pedido web.

Si a eso te refieres, pues esa información no se envía cuando el campo está deshabilitado. Estaba seguro, pero igual hice la prueba. Lo hice con ASP pero con PHP es lo mismo. Te pongo el código. Si lo pruebas verás que si el campo edad está deshabilitado, aunque tenga valor no pasa a la otra página.

De hecho, cuando quieres que pase el valor de un campo que está deshabilitado, tienes que habilitarlo justo antes de enviar los datos al servidor.

Saludos,

Primera.asp (la misma que tu pagina):
Código Primera.asp:
Ver original
  1. <html>
  2.     <head>
  3.  
  4.         <title>Buscar Avanzado</title>
  5.  
  6.        
  7.     </head>
  8.      <script>
  9.         function bloqueados(){
  10.                
  11.                 document.form1.nombre.disabled = true
  12.                 document.form1.ciudad.disabled = true
  13.                 document.form1.edad.disabled = true
  14.                 }
  15.        
  16.         function bloquea() {
  17.        
  18.             if (document.form1.radio[0].checked) {
  19.                 document.form1.nombre.disabled = false
  20.                 document.form1.ciudad.disabled = false
  21.                 document.form1.edad.disabled = true
  22.                 document.form1.edad[document.form1.edad.selectedIndex].value=""
  23.                
  24.             }
  25.  
  26.             if (document.form1.radio[1].checked) {
  27.             document.form1.nombre.disabled = false
  28.             document.form1.edad.disabled = false
  29.             document.form1.ciudad.disabled = true
  30.             document.form1.ciudad[document.form1.ciudad.selectedIndex].value=""
  31.             }
  32. }
  33. </script>
  34.  
  35. <body onLoad="bloqueados();">
  36. <p>Seleccione una combinaci&oacute;n.
  37. <p>Obs: Solo puede elegir una de ellas para filtrar los datos
  38.    
  39.    
  40.    
  41. <form name="form1" method="post" action="Segunda.asp">
  42.   <table width="558" border="0" align="center" cellpadding="0" cellspacing="0">
  43.           <tr>
  44.             <td>Combinar solo</td>
  45.             <td>&nbsp;</td>
  46.             <td><input name="radio" type="radio" value="" onClick="bloquea()">
  47.             nombre + ciudad            </td>
  48.             <td>&nbsp;</td>
  49.             <td><input name="radio" type="radio" value="" onClick="bloquea()">
  50.               Nombre +Edad</td>
  51.             <td>&nbsp;</td>
  52.           </tr>
  53.           <tr>
  54.             <td>&nbsp;</td>
  55.             <td>&nbsp;</td>
  56.             <td>&nbsp;</td>
  57.             <td>&nbsp;</td>
  58.             <td>&nbsp;</td>
  59.             <td>&nbsp;</td>
  60.           </tr>
  61.           <tr>
  62.             <td bgcolor="#CCCCCC">&nbsp;</td>
  63.             <td bgcolor="#CCCCCC">&nbsp;</td>
  64.             <td bgcolor="#CCCCCC">&nbsp;</td>
  65.             <td bgcolor="#CCCCCC">&nbsp;</td>
  66.             <td bgcolor="#CCCCCC">&nbsp;</td>
  67.             <td>&nbsp;</td>
  68.           </tr>
  69.           <tr>
  70.             <td width="144" bgcolor="#CCCCCC"><span class="style10">Nombre:</span>
  71.             <input name="nombre" type="text" id="nombre"></td>
  72.             <td width="21" bgcolor="#CCCCCC">&nbsp;</td>
  73.             <td width="187" bgcolor="#CCCCCC">+ Ciudad:
  74.               <select name="ciudad" id="ciudad">
  75.                 <option value="0">-- Seleccione un Ciudad --</option>
  76.                 <option value="1">Ciudad 1</option>
  77.                 <option value="2">Ciudad 2</option>
  78.               </select></td>
  79.             <td width="37" bgcolor="#CCCCCC">&nbsp;</td>
  80.             <td width="158" bgcolor="#CCCCCC">+Edad:
  81.               <select name="edad" id="edad">
  82.                 <option value="0">-- Seleccione edad --</option>
  83.                 <option value="1">Edad 17</option>
  84.                 <option value="2">Edad 18</option>
  85.                 <option value="3">Edad 19</option>
  86.                 <option value="4">Edad 20</option>
  87.               </select></td>
  88.             <td width="137">&nbsp;</td>
  89.           </tr>
  90.              
  91.           <tr>
  92.             <td bgcolor="#CCCCCC">&nbsp;</td>
  93.             <td bgcolor="#CCCCCC">&nbsp;</td>
  94.             <td bgcolor="#CCCCCC">&nbsp;</td>
  95.             <td bgcolor="#CCCCCC">&nbsp;</td>
  96.             <td bgcolor="#CCCCCC">&nbsp;</td>
  97.             <td>&nbsp;</td>
  98.           </tr>
  99.           <tr>
  100.             <td width="144" bgcolor="#CCCCCC">&nbsp;</td>
  101.             <td width="21" bgcolor="#CCCCCC">&nbsp;</td>
  102.             <td width="187" bgcolor="#CCCCCC">&nbsp;</td>
  103.             <td width="37" bgcolor="#CCCCCC">&nbsp;</td>
  104.             <td width="158" bgcolor="#CCCCCC"><input name="Submit" type="submit" value="encontrar"></td>
  105.             <td width="137">&nbsp;</td>
  106.           </tr>
  107.   </table>
  108. </form>
  109.      
  110.       </body>
  111. </html>

Segunda.asp:
Código:
<%
	nombre = Request("nombre")
	edad = Request("edad")
%>

<html>

<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>La Segunda</title>
</head>

<body>
	<form id="formaSegunda">
		Nombre: <input type="text" id="name" value=<%=nombre%> />
		<br/>
		<br/>
		Edad: <input type="text" id="edad" value=<%=edad%> />		
	</form>

<body/>

</html>
  #3 (permalink)  
Antiguo 30/09/2009, 19:29
Avatar de loncho_rojas
Colaborador
 
Fecha de Ingreso: octubre-2008
Ubicación: En el mejor lugar del mundo
Mensajes: 2.704
Antigüedad: 15 años, 6 meses
Puntos: 175
Respuesta: Filtrar formularios

Cierto.. es que en primera instancia no me lo bloqueaba, ahora si, recuerdo que lo modifique antes de levantarlo al foro.. funciona perfecto, gracias por tomerte el tiempo de mirarlo... espero que a otro le sirva tambien
__________________
Ayudo con lo que puedo en el foro, y solo en el foro.. NO MENSAJES PRIVADOS.. NO EMAILS NI SKYPE u OTROS.

Antes de hacer un TOPICO piensa si puedes hallarlo en Google o en el Buscador del Foro...
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 08:15.