2009-12-15 3 views
0

Mes connaissances jQuery/Javascript sont limitées J'ai bien peur. J'ai un "comment avez-vous entendu parler de nous" liste déroulante sur un formulaire. Cependant, je reçois l'erreur suivante Javascript sur le changement:

Erreur: 'viewmap $ [...]' est nulle ou non un objet

Mon menu déroulant ressemble à ceci:

<select onchange="setSourceID(this.value)" name="sourceID" id="sourceID" class="required"> 
    <option value="" selected="selected">Please choose&#8230;</option> 
    <option value="National Paper">National Paper</option> 
    <option value="Magazine">Magazine</option> 
    <option value="Regional Paper">Regional Paper</option> 
    <option value="9682">Internet Search</option> 
    <option value="9684">Recommendation</option> 
    <option value="9683">Other</option> 
</select> 

<!-- some additional dropdowns below that appear based on what's selected above --> 
<select onchange="setSourceID(this.value)" name="referrerName[]" id="referrer1" class="smartField"> 
    <option value="" selected="selected">Please choose&#8230;</option> 
<option value="The Times">The Times</option> 
etc... 
</select> 

and so on... 

Mon Le Javascript ressemble à ceci:

$(document).ready(function() { 
    $('.smartField').hide(); 
    $.viewMap = { 
     '' : $([]), 
     'National Paper' : $('#referrer1'), 
     'Magazine' : $('#referrer2'), 
     'Regional Paper' : $('#referrer3') 
     //'Internet Search' : $('#referrer4'), 
     //'Recommendation' : $('#referrer5'), 
     //'Other' : $('#referrer6') 
    }; 

    $("#sourceID").bind(($.browser.msie ? "click" : "change"), function() { 
     $.each($.viewMap, function() { this.hide(); }); // hide all 
     $.viewMap[$(this).val()].show(); // show current 
    }); 
}); 

Quelqu'un a-t-il une idée de l'endroit où je me trompe? Toute aide est très appreciée.

Répondre

0

Je soupçonne que le problème réside dans cette ligne:

$.viewMap[$(this).val()].show(); 

Vérifiez ce que $(this).val() les retours et voir si la clé existe correspondante dans $.viewMap

+0

Désolé, comment dois-je faire cela? Avec une alerte? –

+0

Oui, un 'alert' suffirait, bien que' console.log' (avec Firebug) serait mieux –

Questions connexes