2010-06-19 3 views
2

je la baisse suivante vers le bas:Comment faire disparaître quelque chose en utilisant jQuery?

<select name="chooseLanguage"> 
    <option>Choose One</option> 
    <option value="java">Java</option> 
    <option value="php">PHP</option> 
    <option value="c++">C++</option> 
</select> 

Si tout est sélectionné dans cette liste déroulante autre que la valeur par défaut « Choisissez un » qui est bien sûr présélectionné, je veux que ce champ de saisie à disparaître:

<input type="file" name="uploadFile" /> 

Comment cela peut-il être réalisé en utilisant jQuery (si possible avec un joli effet de fondu)?

EDIT

Mon code entier, pour une raison aucune des réponses ont travaillé pour moi.

<script type="text/javascript" src="jquery/jquery-1.4.2.min.js"></script> 

<script type="text/javascript"> 
$(function(){ 
    $("#chooseLanguage").change(function(){ 
    if ($(this).val() == '') { 
     $("#uploadFile").hide(); 
    } else { 
     $("#uploadFile").show(); 
    } 
    }); 
}); 
</script> 

<form action="" method="post"> 

<select name="chooseLanguage" id="chooseLanguage"> 
    <option>Choose One</option> 
    <option value="java">Java</option> 
    <option value="php">PHP</option> 
    <option value="c++">C++</option> 
</select> 

<input type="file" name="uploadFile" id="uploadFile" /> 

</form> 
+1

+ 1 pour un joli titre, David Copperfield devrait être un utilisateur SO :) – Sinan

+0

Mon exemple a fonctionné. Pour que votre code fonctionne, changez $ (this) .val() == '') 'en $ (this) .attr (" selectedIndex ")> 0)'. Ensuite, cela fonctionne aussi bien que mon code ci-dessous. –

+0

parfait, merci beaucoup Gert ça marche maintenant. – Ron

Répondre

0

Les autres réponses sont presque correctes, mais il manque une minute ou un détail ou deux. Cela devrait fonctionner "hors de la boîte".

$(function(){ 
    $("#chooseLanguage").change(function(){ 
    if ($(this).val() == '') { 
     $("#uploadFile").hide(); 
    } else { 
     $("#uploadFile").show(); 
    } 
    }); 
}); 

Il suffit de donner la boîte de sélection "chooseLanguage" un ID de "chooseLanguage", et l'entrée de téléchargement d'un ID de "UploadFile".

+0

Je n'ai pas encore choisi de bonnes réponses car aucune des réponses n'a fonctionné pour moi, y compris la vôtre. S'il vous plaît voir mon edit dans la question, j'ai posté mon code entier. Pouvez-vous s'il vous plaît l'exécuter et voir pourquoi cela ne fonctionne pas? – Ron

+0

@Ron: Voir ma note en haut. Ma solution fonctionne. –

+0

Excuses Ron. Parce que l'option "Choisir un" manquait un attribut de valeur vide, l'instruction IF ne fonctionnait pas correctement. Up-voté votre réponse Gert G. – Wireblue

3
<input id="uploadFile" type="file" name="uploadFile" /> 

alors vous pouvez simplement utiliser $('#uploadFile').hide()

comme le suggère que vous avez également fadeOut() et fadeIn() pour l'effet inverse ..

2

Donnez l'entrée d'un id, comme id="myupload".

Ensuite, il suffit:

$('#myupload').fadeOut('slow'); 
1

Vous pouvez faire comme:

$('select[name="chooseLanguage"]').change(function(){ 
    if ($(this).val()) 
    { 
    $('input[name="uploadFile"]').fadeOut('slow'); 
    } 
}); 
+1

+1 - Sauf que vérifier pour $ (this) .val() 'ne fera pas l'affaire. très bien car s'il n'y a pas de valeur, il renvoie le texte contenu dans l'option (pour certains navigateurs de toute façon). – user113716

0

Voici une autre façon de le faire. Exemple: trouver tous les <div> éléments qui ont une classe CSS du "produit", et les animer à disparaître lentement:

$("div.product").slideUp('slow').addClass("removed"); 
1

jQuery

$(document).ready(function(){ 
    $("#chooselanguage").change(function(){ 
    if ($("#chooselanguage").attr("selectedIndex")>0) { 
     $("#fileupload").fadeOut(); 
    } else { 
     $("#fileupload").fadeIn(); 
    } 
    }); 
}); 

HTML

<select id="chooselanguage" name="chooseLanguage"> 
    <option>Choose One</option> 
    <option value="java">Java</option> 
    <option value="php">PHP</option> 
    <option value="c++">C++</option> 
</select> 
Questions connexes