2013-03-26 10 views
6

Ich habe eine Auswahlliste mit vales 'all' und 'custom'. Bei der Auswahl mit dem Wert 'custom' sollte ein div mit der Klasse 'resources' angezeigt werden, und wenn der Wert 'all' ist, sollte es ausgeblendet werden.jquery show hide div basierend auf Wert auswählen

Form ist:

<div> 
    <label>Privileges:</label> 
    <select name="privileges" id="privileges" class="" onclick="craateUserJsObject.ShowPrivileges();"> 
     <option id="all" value="all">All</option> 
     <option id="custom" value="custom">Custom</option> 
    </select> 
</div> 
<div class="resources" style=" display: none;">resources</div> 

und Javascript hierfür ist:

ShowPrivileges: function() { 
    var Privileges = jQuery('#privileges'); 
    var select = this.value; 
    Privileges.change(function() { 
     if (select === 'custom') { 
      $('.resources').show(); 
     } 
    }); 
} 

Wie soll das aussehen, um zu arbeiten? Tut mir leid, ich weiß, das sollte einfach sein, aber ich bin neu mit all dem.

+0

ist craateUserJsObject ... richtig geschrieben? Oder soll es createUserJsObject sein? –

+0

Danke euch allen. Antwort von @dfsq hat perfekt funktioniert. –

Antwort

8

Sie benötigen val-Methode zu verwenden:

var Privileges = jQuery('#privileges'); 
var select = this.value; 
Privileges.change(function() { 
    if ($(this).val() == 'custom') { 
     $('.resources').show(); 
    } 
    else $('.resources').hide(); // hide div if value is not "custom" 
}); 

http://jsfiddle.net/RWUdb/

+0

Danke, das funktioniert perfekt. –

+0

Warum brauchen Sie die zweite Zeile? Diese Variable wird niemals verwendet – reggaeguitar

1
Privileges.on('change',function(){ 
    if($(this).val()=='custom'){ 
     $('.resources').show(); 
    }else{ 
     $('.resources').hide(); 
    } 
}) 
+0

Hallo, danke, das funktioniert zu zeigen, aber es versteckt nicht das Div, wenn der Wert 'alle' ausgewählt ist –

+0

if ($ (this) .val() == 'benutzerdefinierte') { $ ('. Ressourcen'). Show(); } sonst { $ ('. Resources'). Hide(); } –

0

Sie den Event-Handler hinzufügen möchten:

$("#privileges").change(craateUserJsObject.ShowPrivileges); 

Dann in Ihrem ShowPrivileges funciton:

var val = $("#privileges").val(); 
if(val == "whatever") 
    //do something 
else 
    //do something 
0
$("#privileges").change(function(){ 
    var select= $(this).val(); 
     if(select=='custom'){ 
      //some code 
     } 
    }); 

oder

var select=$('#privileges :selected').val() 
    if(select=='custom'){ 
    //some code 
    } 
0

Sie machen dies zu kompliziert:

First off, fallen die Inline-onclick. Da Sie jQuery verwenden, hängen Sie Ihren Handler dynamisch an.

<div> 
    <label>Privileges:</label> 
    <select name="privileges" id="privileges"> 
     <option id="all" value="all">All</option> 
     <option id="custom" value="custom">Custom</option> 
    </select> 
</div> 
<div class="resources" style=" display: none;">resources</div> 

Zweitens nicht für den Klick hören und dann die change Handler anhängen. Bringen Sie es direkt

<script> 
jQuery('#privileges').on('change',function(){ 
    if(jQuery(this).val()=='custom'){ 
     jQuery('.resources').show(); 
    } else { 
     jQuery('.resources').hide(); 
    } 
}); 
</script> 
0

Sie den HTML-Code bereinigen kann durch die onClick fallen und die IDs aus den Optionen zu entfernen.

HTML:

<div> 
    <label>Privileges:</label> 
    <select name="privileges" id="privileges"> 
     <option value="all">All</option> 
     <option value="custom">Custom</option> 
    </select> 
</div> 
<div class="resources" style=" display: none;">resources</div> 

Und sie JavaScript konnte einfach tun:

$('#privileges').on('change', function() { 
     if($(this).val() === 'all') { 
      $('.resources').hide(); 
     } else { 
      $('.resources').show(); 
     } 
});