2010-03-24 10 views
5

Ho il seguente codice:jQuery Visualizza una casella di testo Quando un opzione è selezionata

<select> 
<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" /> 

Quello che voglio fare è utilizzando jQuery rendere box seguente nascosta per impostazione predefinita, e poi mostrare che se un utente seleziona il altra opzione dal menu a discesa.

risposta

6
<select id="sel"> 
<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" style="display: none;" /> 

$('#sel').change(function() { 
    $('#other').css('display', ($(this).val() == 'Other') ? 'block' : 'none'); 
}); 
+0

Anche se Cameron non ha chiesto di nascondere il testo se qualsiasi altra opzione è stata selezionata ... – ScottE

+0

@ScottE: questo è vero, ma sarei molto sorpreso se non è quello che OP previsto. –

+0

Questo funziona benissimo. – Cameron

1

Prova questo:

<select id="selectbox_id"> 
<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" /> 

JQuery:

$(function(){ 
    // hide by default 
    $('other').css('display', 'none'); 

    $('selectbox_id').change(function(){ 
    if ($(this).val() === 'Other') { 
    $('other').css('display', 'block'); 
    } 
}); 
}); 
+0

perché giù voto ...............? – Sarfraz

+0

Non sono sicuro del motivo per cui è stato votato. Funziona bene eccetto che c'è un segno "=" in più nell'istruzione "if". – jj2

9

Non c'è bisogno di alcun css qui.

$('#sel').change(function() { 
    var selected = $(this).val(); 
    if(selected == 'Other'){ 
     $('#other').show(); 
    } 
    else{ 
     $('#other').hide(); 
    } 
}); 
+0

sicuramente non ha mai sentito nessuno dire "non c'è bisogno di css" prima. perché mai vorresti evitare di usare i CSS? –

+0

@David Hedlund, che senso ha usare css per mostrare e nascondere elementi quando jQuery ha la funzionalità integrata. Suppongo che se vuoi ancora fare calcoli con un abaco andare avanti, ma usare show/hide è molto più elegante. – Gabe

+0

In realtà, ho trovato la risposta di David Hedlund più elegante. Se guardi il contenuto reso in firebug vedrai che il display css viene comunque utilizzato sotto le copertine. – ScottE

Problemi correlati