Foros del Web » Programando para Internet » Javascript »

función campo checkbox un poco complicada

Estas en el tema de función campo checkbox un poco complicada en el foro de Javascript en Foros del Web. Regüenas, tengo un formulario donde se genera una serie de campos con formato checkbox que todos tienen el mismo ID, según los que el usuario ...
  #1 (permalink)  
Antiguo 06/01/2005, 07:44
 
Fecha de Ingreso: noviembre-2003
Ubicación: Madrid
Mensajes: 353
Antigüedad: 20 años, 5 meses
Puntos: 1
función campo checkbox un poco complicada

Regüenas, tengo un formulario donde se genera una serie de campos con formato checkbox que todos tienen el mismo ID, según los que el usuario marca, los valores de estos se van sumando y se guardan.

Ejemplo:
Objeto formulario :checkbox
name ="gustos"

valores = "salado,dulce,grande,pequeño,etc..."

El usuario puede marcar varios checkbox, como digo, todos con el mismo nombre, y estos valores se guardan.

Bien, lo que necesito es que si un usuario selecciona por ejemplo la casilla con valor "dulce", se desactive la de valor "salado" por obvias razones.

La función que conozco de java script permite desactivar otra casilla siempre y cuando tenga otro nombre, pero ¿Se puede hacer en casillas con el mismo nombre pero de diferentes valores como es este caso?

Gracias
__________________
Lo menos frecuente en este mundo es vivir. La mayoría de la gente existe, eso es todo...
  #2 (permalink)  
Antiguo 06/01/2005, 07:56
Avatar de JavierB
Colaborador
 
Fecha de Ingreso: febrero-2002
Ubicación: Madrid
Mensajes: 25.052
Antigüedad: 22 años, 2 meses
Puntos: 772
Hola yomesmo

Así en plan rápido, puedes hacer un bucle que recorra los checkbox hasta encontrar el que tiene el value adecuado. Supogamos que tu formulario se llama frm
Código HTML:
ele=frm.elements;
for(i=0;i<ele.length;i++)
  if(ele[i].type=='checkbox')
    if(ele[i].value=='salado') ele[i].disabled=true;
Pruebalo a ver que tal funciona.

Saludos,
  #3 (permalink)  
Antiguo 06/01/2005, 12:42
 
Fecha de Ingreso: noviembre-2003
Ubicación: Madrid
Mensajes: 353
Antigüedad: 20 años, 5 meses
Puntos: 1
Gracias por responder.

He pensado en algo como esto:

si la casilla es "dulce" entonces desmarco la casilla de "salado":

onClick='document.nombre_form.nombre_campo.value== 'salado'.checked = false;'

pero algo no me funciona, me temo que la sintaxis no es correcta....

SOS - SOS
__________________
Lo menos frecuente en este mundo es vivir. La mayoría de la gente existe, eso es todo...
  #4 (permalink)  
Antiguo 06/01/2005, 13:09
Avatar de living  
Fecha de Ingreso: mayo-2004
Mensajes: 1.266
Antigüedad: 20 años
Puntos: 2
¿Por qué no usas un id para cada uno?

<input type="checkbox" name="gustos" id="salado" value="salado">
<input type="checkbox" name="gustos" id="dulce" valuw="dulce">

y después accedes a cada uno de ellos con getElementById:

Código HTML:
<input type="checkbox" name="gustos" id="salado" value="salado" onClick='document.getElementById("dulce").checked = false;'> 
__________________
¿Te apasiona el mundo del guión? El portal del guión
  #5 (permalink)  
Antiguo 06/01/2005, 13:14
 
Fecha de Ingreso: noviembre-2003
Ubicación: Madrid
Mensajes: 353
Antigüedad: 20 años, 5 meses
Puntos: 1
Bueno, es largo de explicar, pero no puedo hacerlo como comentas, todos deben tener el mismo ID
__________________
Lo menos frecuente en este mundo es vivir. La mayoría de la gente existe, eso es todo...
  #6 (permalink)  
Antiguo 06/01/2005, 13:43
Avatar de living  
Fecha de Ingreso: mayo-2004
Mensajes: 1.266
Antigüedad: 20 años
Puntos: 2
Entonces tendrás que hacerlo como dice JavierB, no veo otra manera de poder identificar un checkbox si no es con el value.
__________________
¿Te apasiona el mundo del guión? El portal del guión
  #7 (permalink)  
Antiguo 07/01/2005, 04:11
Avatar de JavierB
Colaborador
 
Fecha de Ingreso: febrero-2002
Ubicación: Madrid
Mensajes: 25.052
Antigüedad: 22 años, 2 meses
Puntos: 772
Hola de nuevo.

No entiendo bien. ¿Todos tienen el mismo id o el mismo nombre? Pon el formulario que estás usando a ver si nos inspiramos un poco.

Saludos,
  #8 (permalink)  
Antiguo 07/01/2005, 04:52
 
Fecha de Ingreso: noviembre-2003
Ubicación: Madrid
Mensajes: 353
Antigüedad: 20 años, 5 meses
Puntos: 1
Cuelgo el código:

<%
':: defino campos que compondrán el listado de opciones que el usuario puede marcar, todas las casillas tendrán el mismo nombre, pero se añadiran al campo de la BD solo los valores que haya marcado (Los valores son variables en ASP)

a_addeditfields = Array("Title","Author","user_name","ShortDesc","Vi ewDetail","LongDesc","DateAdded","DateLastMod","Da teAlert","Cat","Impressions","AvgRating","Priority ","Status","Image1","Thumbnail","RelatedURL","Down loadURL","Filename","NextContentId","ParentContent Id","Imprimir","EnvioEmail","Opinar","Subastas","T ienda")
a_displaylabels = Array(titulo,autor,nombre_usuario,desc_corta,ver_d etalle_link,desc_larga,fecha_Ad,ult_modificacion,f echa_Alerta,categoria,veces_visto,ver_votos,priori dad,estado,imagen,imagen_miniatura,url_relacionada ,"Download URL",fichero,previos&"/"&siguientes&" Link","Item "&enparentada,imprimir,Rec_EMail,"Opinar",Subastas ,E_Commerce)
%>




<%

'ahora muestro las casillas donde todas llevan el mismo nombre:"EditFields" pero hay dos valores donde se debe de escoger entre una de las opciones, o "Imágen redimensionada" o "Image1" y "thumbnail" pero no pueden ser que ambas estén marcadas"


if isNull(EditFields) then EditFields=""
a_fields = split(EditFields,",")
response.write ""
response.write "<br>"
response.write "<i><font color='#FF0000'><b>Nota:</b></font> Si se permite que los usuarios suban fotos al servidor. Debe escoger entre:<br>"
response.write "<font color='#FF0000'>Opci&oacute;n 1:</font> Suban Im&aacute;genes Redimensionadas automaticamente<br>"
response.write "<font color='#FF0000'>Opci&oacute;n 2:</font> Suban Im&aacute;genes o Thumbnails de tama&ntilde;o libre<br><br></i>"

response.Write("<table><tr><td>")

for j=0 to uBound(a_addeditfields)
checked = ""
for i = 0 to uBound(a_fields)
if trim(a_fields(i))=a_addeditfields(j) then
checked = "checked"
exit for
end if
next


'AQUI ES DONDE SE DAN LOS DOS VALORES QUE SON INCOMPATIBLES:

if (a_addeditfields(j) = "Image1" or a_addeditfields(j) ="Thumbnail")then
response.write "<input type=checkbox name=EditFields value='" & a_addeditfields(j) & "' " & checked & " AQUI DEBERÍA IR UN ONCLICK QUE DESACTIVARA LA CASILLA "IMAG_RESIZE" >* " & a_addeditlabels(j) & "&nbsp;"
elseif a_addeditfields(j) = "Imag_Resize" then response.write "<input type=checkbox name=EditFields value='" & a_addeditfields(j) & "' " & checked & "AQUI DEBERÍA IR UN ONCLICK QUE DESACTIVARA LAS CASILLAS "IMAGE1 Y THUMBNAIL"># " & a_addeditlabels(j) & "&nbsp;"

else
response.write "<input type=checkbox name=EditFields value='" & a_addeditfields(j) & "' " & checked & ">" & a_addeditlabels(j) & "&nbsp;"
end if
response.Write("<br>")
if (j+1) mod 5 = 0 then response.write "</td><td>"

next
response.Write("</td></tr></table>")


%>
__________________
Lo menos frecuente en este mundo es vivir. La mayoría de la gente existe, eso es todo...
  #9 (permalink)  
Antiguo 07/01/2005, 05:43
Avatar de JavierB
Colaborador
 
Fecha de Ingreso: febrero-2002
Ubicación: Madrid
Mensajes: 25.052
Antigüedad: 22 años, 2 meses
Puntos: 772
Rehola:

& checked & " onclick='desactiva(\"IMAG_RESIZE\") >* " & a_addeditlabels(j)

y usas la función que te puse en el primer mensaje:

function desactiva(obj) {
ele=frm.elements;
for(i=0;i<ele.length;i++)
if(ele[i].type=='checkbox')
if(ele[i].value==obj) ele[i].disabled=true; }

Espero que te funcione. Saludos,
  #10 (permalink)  
Antiguo 07/01/2005, 06:05
 
Fecha de Ingreso: noviembre-2003
Ubicación: Madrid
Mensajes: 353
Antigüedad: 20 años, 5 meses
Puntos: 1
Estoy jodido, no tira...

He puesto:
<script language="JavaScript" type="text/JavaScript">
function desactiva(obj) {
ele=edit_ContentTypes.elements;
for(i=0;i<ele.length;i++)
if(ele[i].type=='checkbox')
if(ele[i].value==obj) ele[i].disabled=true; }

//edit_ContentTypes es el nombre del formulario
</script>

y luego en ASP:

<%
response.write "<input type=checkbox name=EditFields value='" & a_addeditfields(j) & "' " & checked & " onclick='desactiva(\'Imag_Resize\') >* " & a_addeditlabels(j) & "&nbsp;"

%>

¿Habré escrito algo mal?
__________________
Lo menos frecuente en este mundo es vivir. La mayoría de la gente existe, eso es todo...
  #11 (permalink)  
Antiguo 07/01/2005, 10:58
Avatar de JavierB
Colaborador
 
Fecha de Ingreso: febrero-2002
Ubicación: Madrid
Mensajes: 25.052
Antigüedad: 22 años, 2 meses
Puntos: 772
ReRe...ReHola.

A lo mejor sería más fácil si, en lugar del código ASP, pusieras el código HTML que te genera.

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 01:05.