2012-08-22 4 views
17

Ich habe eine einfache Dropdown und ich möchte es so, dass, wenn der Benutzer wählt ein Baby die Nachricht ändert sich zu einem Baby, aber für jede andere Auswahl. Die Nachricht bleibt gleich (nichts), aber das funktioniert nicht. Kann mir bitte jemand helfen. Bitte spiel mit meiner Freundin.Drop-Down mit JavaScript onchange

http://jsfiddle.net/Z9YJR/ Hier ist der HTML

<select id="leave"> 
    <option value="5">Get Married</option> 
    <option onchange="changeMessage()" value="100">Have a Baby</option> 
    <option value="90">Adopt a Child</option> 
    <option value="15">Retire</option> 
    <option value="15">Military Leave</option> 
    <option value="15">Medical Leave</option> 
</select> 

<div id="message"></div> 

Hier ist die js

function changeMessage() { 
    document.getElementById("message").innerHTML = "Having a Baby!!"; 
} 
+0

Es sieht aus wie Sie die Funktion für jsfiddle speziell zu verlagern haben. Ich glaube, das ist ihre Art, jeden von Ihnen geschriebenen Code zu kapseln, so dass er keinen ihrer Codes beeinträchtigt. http://jsfiddle.net/Z9YJR/5/ – Shmiddty

+0

Ah! Danke Shmiddty :) –

Antwort

37

So etwas sollte

<select id="leave" onchange="leaveChange()"> 
    <option value="5">Get Married</option> 
    <option value="100">Have a Baby</option> 
    <option value="90">Adopt a Child</option> 
    <option value="15">Retire</option> 
    <option value="15">Military Leave</option> 
    <option value="15">Medical Leave</option> 
</select> 

<div id="message"></div> 

Javascript

01 den Trick
function leaveChange() { 
    if (document.getElementById("leave").value != "100"){ 
     document.getElementById("message").innerHTML = "Common message"; 
    }  
    else{ 
     document.getElementById("message").innerHTML = "Having a Baby!!"; 
    }   
} 

jsFiddle Demo

Eine kürzere Version und allgemeinere könnte

HTML

<select id="leave" onchange="leaveChange(this)"> 
    <option value="5">Get Married</option> 
    <option value="100">Have a Baby</option> 
    <option value="90">Adopt a Child</option> 
    <option value="15">Retire</option> 
    <option value="15">Military Leave</option> 
    <option value="15">Medical Leave</option> 
</select> 

Javascript

function leaveChange(control) { 
    var msg = control.value == "100" ? "Having a Baby!!" : "Common message"; 
    document.getElementById("message").innerHTML = msg; 
} 
sein
+0

Wenn ich es laufe, zeigt es nie irgendetwas für die Mitteilung an. –

+0

sorry, verpasste '()' on 'onchange = leaveChange' –

+1

Sie können das select-Objekt in die Funktion für größere Abstraktion ... onchange übergeben = "leaveChange (this)" ... function leaveChange (elem) {if (e.value ... – FrankieTheKneeMan

1

Es funktioniert nicht, weil Ihr Skript in JSFiddle in seinem eigenen Bereich ausgeführt wird (siehe die "OnLoad" - Dropdownliste auf der linken Seite?).

Ein Weg, um dies ist Ihre Event-Handler in JavaScript zu binden (wo es sein soll):

document.getElementById('optionID').onchange = function() { 
    document.getElementById("message").innerHTML = "Having a Baby!!"; 
}; 

Ein anderer Weg ist der Code für die Geige Umgebung zu ändern und ausdrücklich Ihre Funktion als global deklarieren, damit es kann von Ihrem Inline-Event-Handler zu finden:

window.changeMessage() { 
    document.getElementById("message").innerHTML = "Having a Baby!!"; 
}; 

2

leicht

<script> 
jQuery.noConflict()(document).ready(function() { 
    $('#hide').css('display','none'); 
    $('#plano').change(function(){ 

     if(document.getElementById('plano').value == 1){ 
      $('#hide').show('slow');  

     }else 
      if(document.getElementById('plano').value == 0){ 

      $('#hide').hide('slow'); 
     }else 
      if(document.getElementById('plano').value == 0){ 
      $('#hide').css('display','none'); 

      } 

    }); 
    $('#plano').change(); 
}); 
</script> 

dieses Beispiel zeigt und verbirgt die div in Combobox ausgewählt, wenn einige spezifische Wert

+9

Weil offensichtlich jeder, der ein Javascript-Problem hat, jQuery verwenden will oder will! –