webdesign / development + awesome
archivovaný archívny archív
Aké jednoduché je vytvoriť formulár ako tento od nuly? Takto jednoduché:
Klikni na "povedz mi o tom viac" a dozvieš sa, ako presunúť labels priamo do inputov, ako zariadiť aby zmizli, keď do nich človek klikne a iné JavaScript srandy (warning: includes jQuery).
Update: ako správne poznamenal Andrej v diskusii, toto .focus( function() { if (elem.val() === text) ... ) } ) nie je ideálne riešenie. Neošetruje situáciu, keď používateľ napíše "Meno" do kolonky Meno. "Malo by si to nejak pamätať, či je v inpute text od užívateľa, alebo label."
Môžeme napríklad využiť jQuery.data() a o každom inpute evidovať, či bol editovaný.
elem.data('edited', false);
elem.change(function() { elem.data('edited', true); }); <-- zmena hodnoty inputu
Následne:
.focus( function() { if ( !elem.data('edited') ) { elem.val('').css( css_focused ); } })
.blur ( function() { if ( !elem.val() ) { elem.val( text ).css( css_blured ); elem.data('edited', false); } });
<form action="" method="post"> <label for="meno">Meno</label> <input type="text" id="meno" name="meno"> <label for="email">Email</label> <input type="text" id="email" name="email"> <label for="text">Text</label> <textarea id="text" name="text"></textarea> <input type="submit" value="do something"> </form>
body { background: #e3e3e3; font: 13px/16px Tahoma; color: #555; }
form { width: 350px; margin: 0 auto; margin-top: 75px; }
h1 { margin-bottom: 25px; text-shadow: 1px 1px 0px #f3f3f3; }
input, textarea {
display: block; margin-bottom: 15px; padding: 7px; background: #fafafa;
border: 1px solid; border-color: #ccc #fcfcfc #fcfcfc #ccc;
border-radius: 5px; -moz-border-radius: 5px; -webkit-border-radius: 5px;
}
input { width: 150px }
textarea { width: 330px; height: 75px; }
input[type=submit] {
width: 100px; cursor: pointer; border-color: #fcfcfc #ccc #ccc #fcfcfc;
color: #555; font: bold 11px Tahoma;
box-shadow: 1px 1px 1px #ddd; -moz-box-shadow: 1px 1px 1px #ddd; -webkit-box-shadow: 1px 1px 1px #ddd;
}
input[type=submit]:hover { border-color: #999; }
$(function()
{
var form = $('form'),
inputs = $('form').find(':input').not(':input[type=submit]');
inputs.each(function()
{
var elem = $(this),
label = elem.prev(),
text = label.text();
var css_blured = { 'color': '#afafaf', 'font-style': 'italic' },
css_focused = { 'color': '#333', 'font-style': 'normal' };
label.hide();
elem.data('edited', false);
elem.change(function() { elem.data('edited', true); });
elem.val( text )
.css( css_blured )
.focus( function() { if ( !elem.data('edited') ) { elem.val('').css( css_focused ); } })
.blur ( function() { if ( !elem.val() ) { elem.val( text ).css( css_blured ); elem.data('edited', false); } });
});
$('#meno, #email').css('float', 'left');
$('#text').css('clear', 'both');
$('#meno').css('margin-right', '14px');
form.submit(function() { return false; });
});
Archivovaný archív je bez komentárov. Radšej.
6 komentárov
komentuj ku každému komentáru sa v databáze ukladá iba meno, text a dátum, iba za účelom zobrazenia pod článkomneukladá sa email, IP adresa ani informácie o prehliadači a údaje sa nepoužívajú na reklamu, newsletter, na žiadnu ekonomickú aktivitu, nikam sa neposielajú, sú v databáze len aby sa mohli zobraziť pod článkom