Skip to content

Instantly share code, notes, and snippets.

@ClausPolanka
Created March 24, 2014 20:47
Show Gist options
  • Save ClausPolanka/9748832 to your computer and use it in GitHub Desktop.
Save ClausPolanka/9748832 to your computer and use it in GitHub Desktop.
Tuts+ jQuery in 30 days Contact Form example.
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Effects</title>
<style>
body {
width: 600px;
margin: auto;
font-family: sans-serif;
}
#contact {
background: #e3e3e3;
padding: 1em 2em;
position: relative;
}
.js #contact {
position: absolute;
top: 0;
width: inherit;
display: none;
}
#contact h2 { margin-top: 0; }
#contact ul { padding: 0; }
#contact li { list-style: none; margin-bottom: 1em; }
/* Close button on form */
.close {
position: absolute;
right: 10px;
top: 10px;
font-weight: bold;
font-family: sans-serif;
cursor: pointer;
}
/* Form inputs */
input, textarea { width: 100%; line-height: 2em; }
input[type=submit] { width: auto; }
label { display: block; text-align: left; }
label { displul: block; text-align: left; }
label { display: block; text-align: left; }
</style>
</head>
<body>
<article>
<h1>My Awesome Post</h1>
<p>
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod
tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam,
quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo
consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse
cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non
proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
</p>
<p>
Lorem ipsum dolor sit amet, consectetur adipisicing elit. Corrupti, consectetur, obcaecati atque tempora ullam illo fugit assumenda. Aliquid, provident, quibusdam, atque debitis eius voluptate voluptatum quos praesentium repellat nihil repudiandae!
</p>
<p>
Lorem ipsum dolor sit amet, consectetur adipisicing elit. Temporibus, suscipit, molestiae, magnam maiores expedita consequatur aspernatur doloribus eaque ut iusto illum ipsum eveniet hic ullam reiciendis facilis ipsam est. Atque!
</p>
<p>
Lorem ipsum dolor sit amet, consectetur adipisicing elit. Error, voluptates, voluptas enim tempora laudantium repellendus ab fuga dolores sunt et recusandae autem ut blanditiis repudiandae facilis dicta porro fugiat beatae.
</p>
</article>
<div id="contact">
<h1>Contact Me</h1>
<form action="#">
<ul>
<li><label for="name">Name: </label><input name="name" id="name"></li>
<li><label for="email">Email Address: </label><input name="email" id="email"></li>
<li>
<label for="comments">What's Up?</label>
<textarea name="comments" id="comments" cols="30" rows="10"></textarea>
</li>
<li><input type="submit" value="Submit"></li>
</ul>
</form>
</div>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.js"></script>
<script>
(function() {
$('html').addClass('js');
var contactForm = {
container: $('#contact'),
config: {
effect: 'slideToggle',
speed: 500
},
init: function(config) {
$.extend(this.config, config);
$('<button></button>', { text: 'Contact Me' })
.insertAfter('article:first')
.on('click', this.showCallback); // this => contactForm
},
showCallback: function() {
var cf = contactForm,
container = cf.container,
config = cf.config;
if (container.is(':hidden')) {
var thisContext = container;
cf.close.call(thisContext, config);
container[config.effect](config.speed);
}
},
close: function(config) {
var contactForm = this; // Wird in der call() Methode gesetzt.
if (contactForm.find('span.close').length == 1) return;
$('<span class=close>X</span>')
.prependTo(contactForm)
.on('click', function() {
contactForm[config.effect](config.speed);
});
}
};
contactForm.init();
// contactForm.init({ effect: 'fadeToggle', speed: 2000 });
})();
</script>
</body>
</html>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment