Foros del Web » Programando para Internet » Javascript »

eliminar input o generar lista exceptuandolo

Estas en el tema de eliminar input o generar lista exceptuandolo en el foro de Javascript en Foros del Web. Muy buenas a todos! antes que nada, ya que es mi primer post, pues los saludos de rigor. Comentar que he estado buscando por el ...
  #1 (permalink)  
Antiguo 22/02/2010, 16:11
 
Fecha de Ingreso: febrero-2010
Mensajes: 2
Antigüedad: 14 años, 9 meses
Puntos: 0
eliminar input o generar lista exceptuandolo

Muy buenas a todos!

antes que nada, ya que es mi primer post, pues los saludos de rigor.
Comentar que he estado buscando por el foro, pero no he encontrado exactamente lo que necesito.

tengo un form del tipo
<form>
<select>
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
</select>
<input type="checkbox" id="1" value="true">1</br>
<input type="checkbox" id="2" value="true">2</br>
<input type="checkbox" id="3" value="true">3</br>
</form>

lo que busco es que cuando seleccione una de las opciones en el desplegable de option, pues o bien se elimine la correspondiente del input, o bien se genere un listado de inputs excluyendo la del option.
El listado por tanto es el mismo, salvo por la concurrente.

He conseguido hacerlo mediante divs y ocultarlo/desocultarlo por javascript, pero es un toston porque tienes que generar todas las opciones posibles y no es plan... demas, teniendo en cuenta que son unas 40 opciones, el peso me parece exagerado para lo que necesito

cualquier sugerencia de por donde tirar, pues agradecido que estará uno :)
  #2 (permalink)  
Antiguo 23/02/2010, 07:35
Avatar de Kaze71  
Fecha de Ingreso: enero-2010
Mensajes: 44
Antigüedad: 14 años, 10 meses
Puntos: 4
Respuesta: eliminar input o generar lista exceptuandolo

Ahora sólo se me ocurre esto, no sé si habrá alguna forma de hacerlo más simple:

Código:
// Javascript para mostrar todos excepto uno

function checkInput(){
    var sel = document.getElementById('fSel').value;
    var maxInputFields = 3; // Numero máximo de inputs
    var current = 1;

    // Este while muestra todos los inputs
    while(current<=maxInputFields)
    {
        document.getElementById(current).style.display = 'inline';
        current++;
    }
    document.getElementById(sel).style.display = 'none'; // Aquí oculta el que tenga como id el número que se haya seleccionado en <select>
}
Código:
// Javascript para ocultar uno

function checkInput(){
    var sel = document.getElementById('fSel').value;
    document.getElementById(sel).style.display = 'none'; // Aquí oculta el que tenga como id el número que se haya seleccionado en <select>
}
Nótese que lo hice suponiendo que cada <input> tuviera un número como ID y cada <option> tuviera un valor numérico.

Detalles: Al <select> debes ponerle alguna id y un onchange="checkInput()". Estos ejemplos los hice como si tuviera 'fSel' como ID.

Saludos;

Última edición por Kaze71; 23/02/2010 a las 07:36 Razón: Un pequeño error... jeje
  #3 (permalink)  
Antiguo 23/02/2010, 09:21
 
Fecha de Ingreso: febrero-2010
Mensajes: 2
Antigüedad: 14 años, 9 meses
Puntos: 0
Respuesta: eliminar input o generar lista exceptuandolo

antes que nada gracias por la respuesta.. al menos ya estoy cacharreando en base a algo (gracias tambien por las anotaciones)

he tirado en base a esto -y poniendo el fSel como el identificador del formulario- y ahora tengo esto...

Código HTML:
<script type="text/javascript">
// Javascript para mostrar todos excepto uno

function checkInput(){
    var sel = document.getElementById('fSel').value;
    var maxInputFields = 3; 
    var current = 1;

    while(current<=maxInputFields)
    {
        document.getElementById(current).style.display = 'inline';
        current++;
    }
    document.getElementById(sel).style.display = 'none'; 
}
</script>
<form>
<select id="fSel" onchange="checkInput()">
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
</select>
<br/>
<input type="checkbox" id="1">1</br>
<input type="checkbox" id="2">2</br>
<input type="checkbox" id="3">3</br>
</form> 
y tambien el siguiente, aunque el resultado es el mismo

Código HTML:
function checkInput(){
    var sel = document.getElementById('fSel').value;
    document.getElementById(sel).style.display = 'none';
}

la selección del id ya va, pero lo que oculta es el cuadrado del input, quedándose el número correspondiente...

de momento lo he cambiado para que la opción deshabilitada
Código HTML:
document.getElementById(sel).disabled = true;
pero si hay alguna manera de quitarlo del todo, pues perfecto, ya que una vez deshabilitada, al cambiar de opción no se vuelve a habilitar :S

seguiremos trasteando


gracias
  #4 (permalink)  
Antiguo 23/02/2010, 10:40
Avatar de Kaze71  
Fecha de Ingreso: enero-2010
Mensajes: 44
Antigüedad: 14 años, 10 meses
Puntos: 4
Respuesta: eliminar input o generar lista exceptuandolo

Eso es verdad, si quieres ocultar completa una de esas líneas pos la metes toda en una etiqueta y a esa etiqueta le pones la id con el número del input, por ejemplo:

Código HTML:
<script type="text/javascript">
// Javascript para mostrar todos excepto uno

function checkInput(){
    var sel = document.getElementById('fSel').value;
    var maxInputFields = 3; 
    var current = 1;

    while(current<=maxInputFields)
    {
        document.getElementById('checkbox'+current).style.display = 'inline';
        current++;
    }
    document.getElementById('checkbox'+sel).style.display = 'none'; 
}
</script>
<form>
<select id="fSel" onchange="checkInput()">
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
</select>
<br/>
<div id="checkbox1"><input type="checkbox" id="1">1</br></div>
<div id="checkbox2"><input type="checkbox" id="2">2</br></div>
<div id="checkbox3"><input type="checkbox" id="3">3</br></div>
</form> 
Eso en vez de ocultar la checkbox ocultaría todo lo que esté dentro de la etiqueta <div id="checkbox#">, siendo # la id de la checkbox que está dentro. Puedes fijarte en el código que puse arriba. Así si ya tenías hecho algún archivo que procesara el formulario con ese código pos no tendrías que cambiarlo, ya que los campos tendrían la misma ID.

Eso sí, si es verdad lo que dices que son como 40 opciones, pos lo mejor sería grabar alguna macro en el programa que uses para que añada las divs al principio y al final de las líneas, para así terminar antes el trabajo.

Saludos;

Etiquetas: eliminar, input, lista
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 14:02.