2010-03-01 3 views
3

En toute honnêteté, mon cerveau est plutôt frit après avoir obtenu cette mesure aujourd'hui.jQuery cookies réglage sélectionnez la valeur déroulante après rafraîchissement de la page

Je suis en train d'enregistrer l'état de plusieurs sélectionner les menus déroulants à la page en utilisant ce plugin:

http://plugins.jquery.com/project/cookies

J'utilise cette jQuery pour définir des cookies pour les différents menus déroulants de titres en fonction de leur ID:

$(document).ready(function() { 

// hide 'Other' inputs to start 
$('.jOther').hide(); 

// event listener on all select drop downs with class of jTitle 
$(".jTitle").change(function(){ 

    //set the select value 
    var val = $(this).val(); 

    if(val != "Other") { 
     //$(this).nextAll('.jOther').hide(); 
     $(this).parent().find(".jOther").hide(); 
    } else { 
     //$(this).nextAll('.jOther').show(); 
     $(this).parent().find(".jOther").show(); 
    } 

    // Sets a cookie with named after the title field's ID attribute 
    $(this).cookify(); 

}); 

$(".jTitle").each(function(){ 

    // get the id of each Title select drop down 
    var $titleId = $(this).attr('id'); 

    // get the value of the cookie for each cookie created above in $(this).cookify() 
    var $cookieValue = $.cookies.get($titleId); 

    // if value is 'Other' make sure it is shown on page refresh 
    if ($cookieValue == 'Other') { 

     // Show the other input 
     $(this).parent().find(".jOther").show(); 

     // set select value to 'Other' 
     $(this).val('Other'); 

    } else { 

     // set to whatever is in the cookie 
     $(this).val($cookieValue); 

    }      

}); 

}); Ce qui se passe, c'est que quand aucun cookie n'est défini, le menu déroulant de sélection affiche une option vide lorsque je veux que la valeur par défaut soit "Veuillez sélectionner".

Exemple HTML que je suis en utilisant:

<td> 
<select id="titleDepend1" class="inlineSpace jTitle"> 
    <option value="Please select">Please select...</option> 
    <option value="Mr">Mr</option> 
    <option value="Mrs">Mrs</option> 
    <option value="Ms">Ms</option> 
    <option value="Miss">Miss</option> 
    <option value="Dr">Dr</option> 
    <option value="Other">Other</option> 
</select> 
<label for="otherDepend1" class="inlineSpace jOther">Other</label> 
<input type="text" class="text jOther" name="otherDepend1" id="otherDepend1" maxlength="6" /> 

Donc, si elle est la première fois que l'utilisateur est à la page et ils ont pas cliqué sur les bas de chute la première valeur sera nulle et non 'Veuillez sélectionner'

Répondre

3

Je changerais cette partie, si le cookie n'est pas là, juste ne plaisante pas avec le menu déroulant:

$(".jTitle").each(function(){ 
    var $titleId = $(this).attr('id'); 
    var $cookieValue = $.cookies.get($titleId); 
    if ($cookieValue == 'Other') { 
    $(this).parent().find(".jOther").show(); 
    $(this).val('Other'); 
    } else if($cookieValue) { 
    $(this).val($cookieValue); 
    }      
}); 

Le seul changement est d'ajouter un si contrôle sur la fin, voir si il y a un cookie ... sinon la position par défaut de 0 dans la liste déroulante (par défaut du navigateur) sera laissée seule.

+0

Cheers. Je me sens plutôt stupide comme j'essayais de vérifier la présence d'un cookie avec .length car il revenait null. – RyanP13

Questions connexes