Comment changer l'image de fond dynamiquement uniquement lorsque le bouton radio est sélectionné et en appuyant sur le bouton Soumettre
Lien vers l'échantillon
Testez-le en ligne: http://jsfiddle.net/OscarGarcia/t70prkda/
Code de test HTML:
<form name="form" onsubmit="return check()"> <p><input type="radio" name="bg" value="no" /> Desactivate</p> <p><input type="radio" name="bg" checked="checked" value="yes" /> Activate</p> <input type="submit" /> </form>
Code Javascript:
function check() { if (document.form.bg.value == "yes") { document.body.style.background = "red"; } else { document.body.style.background = ""; } return false; }
Testez-le en ligne: http://jsfiddle.net/OscarGarcia/t70prkda/1/
function check() { if ($("#form input[name=bg]:checked").val() == "yes") { $('body').css('background', "red"); } else { $('body').css('background', ""); } return false; }
Pour simplifier, mon code ne change que la couleur d'arrière-plan, celui-ci modifie l'image d'arrière-plan: http://jsfiddle.net/OscarGarcia/t70prkda/2/
function check() { if ($("#form input[name=bg]:checked").val() == "yes") { $('body').css('background-image', "url(https://c2.staticflickr.com/8/7151/6717697085_6d28849226_z.jpg)"); } else { $('body').css('background', ""); } return false; }
Et en javascript pur: http://jsfiddle.net/OscarGarcia/t70prkda/3/
function check() { if (document.form.bg.value == "yes") { document.body.style.backgroundImage = "url(https://c2.staticflickr.com/8/7151/6717697085_6d28849226_z.jpg)"; } else { document.body.style.background = ""; } return false; }
Essayez-le en ligne: http://jsfiddle.net/OscarGarcia/2g6rfdsf/
Code CSS:
body { height: 100%; } #overlay { position: absolute; top: 0px; left: 0px; padding: 0px; margin:0px; width: 100%; height: 100%; background: red url(http://thumbs.dreamstime.com/z/abstract-blue-tiled-background-5151518.jpg) -400px center; transition: all 2s ease-in-out; opacity: 0; z-index: -1; }
Code HTML:
<div id="overlay"></div> <form name="form" id="form" onsubmit="return check()"> <p><input type="radio" name="bg" value="no" /> Fade-out</p> <p><input type="radio" name="bg" checked="checked" value="yes" /> Fade-in</p> <input type="submit" /> </form>
Notez que j'utilise une superposition (un div sur l'arrière-plan) avec l'opacité 0 (caché) et je vais animer l'opacité. Il n'est pas possible d'animer les changements d'image d'arrière-plan, ils changeront instantanément.
Et le code javascript (jQuery version):
function check() { if ($("#form input[name=bg]:checked").val() == "yes") { $('#overlay'). css('opacity', '1'). css('background-position', '0px center'); } else { $('#overlay'). css('opacity', '0'). css('background-position', '-400px center'); } return false; }
Lorsque vous appuyez sur la superposition d'arrière-plan du bouton, vous verrez ou vous cacherez en douceur parce que la transition: all 2s ease-in-out;
code CSS transition: all 2s ease-in-out;
Tandis que la position de gauche change lentement aussi!
J'espère que cela aide!
Vous voudrez utiliser jquery pour enregistrer l'événementHandler avec les deux actions.
Quelque chose comme:
var backgroundHandler = function(){//whatever}; $('#radioWhatever').on('changed',backgroundHandler); $('#submitbtn').on('click', backgroundHandler);