J'ai écrit ce jsfiddle en me basant principalement sur l'exemple found here. L'exemple a plus de 2 ans, donc je me demandais s'il y avait un moyen plus facile de vérifier la valeur d'un bouton radio que des gobs de if, elseif, else
instructions. Mes valeurs vont être disabled, both, footer, header
donc avec seulement quatre pas trop mal. J'essaie juste d'apprendre à mieux écrire Javascript.Vérification dynamique de la valeur d'un bouton radio (question de refactorisation)
Html:
<input type="radio" name="rdio" value="1" checked="checked" /> 1
<input type="radio" name="rdio" value="2" /> 2
<input type="radio" name="rdio" value="3" /> 3
<div id="div_1"> Div 1 Content</div>
<div id="div_2"> Div 2 Content</div>
<div id="div_3"> Div 3 Content</div>
Javascript:
$('#div_1,#div_2,#div_3').css('display','none');
$("input[name=rdio]").change(function() {
if ($("input[name=rdio]:checked").val() == '1') {
$('#div_1').show();
$('#div_2,#div_3').hide();
}
else if ($("input[name='rdio']:checked").val() == '2') {
$('#div_2').show();
$('#div_1,#div_3').hide();
}
else {
$('#div_3').show();
$('#div_2,#div_1').hide();
}
});
jsFiddle à jouer avec: http://www.jsfiddle.net/bs54j/1/
MISE À JOUR: Pour réviser question
Je posté avant de réaliser ce que je serait en fait le faire ici est un violon mis à jour avec th e code réel J'utilise: http://jsfiddle.net/BandonRandon/BsupQ/3/
Nouveau Html:
<h2> What to show? </h2>
<input type="radio" name="show_custom_header_footer" value="disabled" checked="checked" /> Disabled
<input type="radio" name="show_custom_header_footer" value="both" /> Both
<input type="radio" checked name="show_custom_header_footer" value="header" /> Header
<input type="radio" name="show_custom_header_footer" value="footer" /> Footer
<div id="header_footer_options">
This is the main content div of all the options
<p id="custom_header">Custom Header:<br/> <textarea rows="2" cols="100" name="custom_header"> Custom Header Code</textarea></p>
<p id="custom_footer">Custom Footer:<br/> <textarea rows="2" cols="100" name="custom_footer">Custom Footer Code</textarea></p></div>
Nouveau Javascript:
//show hide custom header/footer depending on settings
$('#header_footer_options').hide();
//check status on change
$("input[name='show_custom_header_footer']").change(function() {
if ($("input[name='show_custom_header_footer']:checked").val() == 'disabled') {
$('#header_footer_options').fadeOut(500);
}
else if ($("input[name='show_custom_header_footer']:checked").val() == 'both') {
$('#header_footer_options').fadeIn();
$('#custom_header,#custom_footer').fadeIn();
}
else if ($("input[name='show_custom_header_footer']:checked").val() == 'header') {
$('#header_footer_options').fadeIn();
$('#custom_header').fadeIn();
$('#custom_footer').hide();
}
else if ($("input[name='show_custom_header_footer']:checked").val() == 'footer') {
$('#header_footer_options').fadeIn();
$('#custom_footer').fadeIn();
$('#custom_header').hide();
}
else {
$('#header_footer_options').hide();
}
});
//check status on page load
if ($("input[name='show_custom_header_footer']:checked").val() == 'disabled') {
$('#header_footer_options').hide();
}
else if ($("input[name='show_custom_header_footer']:checked").val() == 'both') {
$('#header_footer_options').show();
$('#custom_header,#custom_footer').show();
}
else if ($("input[name='show_custom_header_footer']:checked").val() == 'header') {
$('#header_footer_options').show();
$('#custom_header').show();
$('#custom_footer').hide();
}
else if ($("input[name='show_custom_header_footer']:checked").val() == 'footer') {
$('#header_footer_options').show();
$('#custom_footer').show();
$('#custom_header').hide();
}
else {
$('#header_footer_options').hide();
}
probablement la plus grande chose qui doit être refondus est le spectacle/cacher la charge I se sentir comme j'ai une tonne de code de la merde supplémentaire là-bas. Je ne cherche pas un document juste une suggestion sur la façon de faire ce travail mieux/plus vite/plus fort.
Pas vraiment ce que je voulais mais certainement utile. Je dois admettre que je ne sais pas exactement ce que je voulais dire. – BandonRandon
@BandonRandon, je pensais que c'était une question à propos de * refactoring *? – livibetter
@livibetter C'est, je suis juste stupide et posté la question avant de penser réellement à l'utilisation du cas. J'ai modifié la question originale. Désolé d'être stupide. – BandonRandon