mostrar/ocultar cuadro de texto basado en la lista desplegable
Frecuentes
Visto 89,610 veces
6
Por ejemplo, tengo un código:
<form name="myform">
<table>
<td>
<select name="one" onchange="if (this.selectedIndex=='other'){this.myform['other'].style.visibility='visible'}else {this.myform['other'].style.visibility='hidden'};">
<option value="" selected="selected">Select...</option>
<option value="1">1</option>
<option value="2">3</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
<option value="6">6</option>
<option value="7">7</option>
<option value="other">Other</option>
</select>
<input type="textbox" name="other" style="visibility:hidden;"/>
</td>
</table>
</form>
Necesito que aparezca el cuadro de texto cuando se selecciona la opción "otro". El código anterior no funciona :(
8 Respuestas
15
selectedIndex
da un índice, es decir, un número, por lo que el índice para "otro" es 8, puede obtener el valor de la opción seleccionada de la propiedad de valor del elemento seleccionado. Para acceder al formulario, un control está en uso, la propiedad de formulario de elementos this.form
, también las celdas de su tabla deben estar en una fila.
<form name="myform">
<table>
<tr>
<td>
<select name="one" onchange="if (this.value=='other'){this.form['other'].style.visibility='visible'}else {this.form['other'].style.visibility='hidden'};">
<option value="" selected="selected">Select...</option>
<option value="1">1</option>
<option value="2">3</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
<option value="6">6</option>
<option value="7">7</option>
<option value="other">Other</option>
</select>
<input type="textbox" name="other" style="visibility:hidden;"/>
</td>
</tr>
</table>
</form>
Respondido 28 ago 12, 14:08
4
<form name="myform">
<table>
<td>
<select name="one" onchange="if (this.options[this.selectedIndex].value =='other'){document.myform['other'].style.visibility='visible'}else {document.myform['other'].style.visibility='hidden'};">
<option value="" selected="selected">Select...</option>
<option value="1">1</option>
<option value="2">3</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
<option value="6">6</option>
<option value="7">7</option>
<option value="other">Other</option>
</select>
<input type="textbox" name="other" style="visibility:hidden;"/>
</td>
</table>
</form>
Respondido 28 ago 12, 13:08
4
<form name="myform">
<table>
<td>
<select name="one" id="mySelect">
<option value="" selected="selected">Select...</option>
<option value="1">1</option>
<option value="2">3</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
<option value="6">6</option>
<option value="7">7</option>
<option value="other">Other</option>
</select>
<input type="textbox" name="other" style="visibility:hidden;"/>
</td>
</table>
</form>
<script type="text/javascript">
$('#mySelect').bind('onchange',function(){
if (this.value==='other')
{
this.myform['other'].style.visibility='visible'
}
else {
this.myform['other'].style.visibility='hidden'};
}
</script>
Respondido 28 ago 12, 13:08
Tu respuesta es incorrecta, pero no votaré negativamente. Estoy seguro de que alguien lo hará. this.selectedIndex=='other'
Está Mal - codificación
1
$(document).ready(function () {
$('#types').change(function () {
if ($('#types').val() == 'Other') {
$('#other').show();
}
else {
$('#other').hide();
}
});
});
<body>
<form id="form1" runat="server">
<div>
<select id="types" name="types">
<option value="Type 1">Type 1</option>
<option value="Type 2">Type 2</option>
<option value="Type 3">Type 3</option>
<option value="Other">Other</option>
</select>
<input type="text" id="other" name="other" style="display: none;" />
</div>
</form>
Respondido 13 Abr '16, 08:04
0
En primer lugar, adjunte su td
en un parche de tr
y luego debajo está la DEMO
Respondido 28 ago 12, 13:08
0
this.selectedIndex
devuelve un entero, no una cadena. Algo así como 0,1,2 y probablemente 8 para 'otros'. 8 == 'other'
nunca puede ser verdad
prueba este
onchange="if (this.options[this.selectedIndex].value =='other')"
Respondido 28 ago 12, 13:08
0
<form name="form" action="" method="post">
<table>
<tr>
<td>
<select name="one" onchange="if (this.value=='yes'){this.form['yes'].style.visibility='visible'}else {this.form['yes'].style.visibility='hidden'};">
<option value="" selected="selected">Select...</option>
<option value="yes">yes</option>
<option value="no">no</option>
</select>
<input type="text" name="yes" style="visibility:hidden;"/>
</td>
</tr>
</table>
</form>
Respondido el 23 de diciembre de 15 a las 12:12
seleccionado un valor, da un valor de sí o no. Para seleccionar el valor, puede obtener el valor de la opción seleccionada de la propiedad de valor del elemento seleccionado. el valor seleccionado es "sí", ese campo de texto oculto de tiempo se mostrará. El valor es "no", el texto archivado está oculto - sukanya suku
0
JQuery
$(document).ready(function() {
$("select").change(function() {
$(this).find("option:selected").each(function() {
if ($(this).attr("value") == "class") {
$(".box").not(".class_name").hide();
$(".class_name").show();
$(".box").not(".class_name").val("");
}
else if ($(this).attr("value") == "ref") {
$(".box").not(".ref_id").hide();
$(".ref_id").show();
$(".box").not(".ref_id").val("");
}
else {
$(".box").hide();
}
});
}).change();
});
HTML
<div>
<select>
<option>Choose</option>
<option value="class">Class</option>
<option value="ref">Particular</option>
</select>
</div>
<div class="class_name box">
Class Name: <input type="text" name="c">
</div>
<div class="ref_id box">
Reference_id : <input type="text" name="r">
</div>
Respondido 18 ago 16, 10:08
No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas javascript html or haz tu propia pregunta.
si agrega otro artículo mañana, el
selectedIndex
no será8
- codificación@codingbiz, ¿qué pasaría si agregara uno hoy? - Musa
Gracias por la solución @Musa. Me preguntaba si hay una manera de manejar el siguiente problema. El cuadro de texto "otro" está oculto hasta que seleccione el valor, pero aún ocupa espacio, por lo que el diseño se ve raro, porque solo ve un espacio vacío. ¿Hay una manera de resolver esto? - kat_indo
@kat_indo puede usar la propiedad de visualización en lugar de la visibilidad. - Musa
¡Gracias por volver a este @Musa! Después de todo, pude resolverlo investigando un poco más. - kat_indo