I den här artikeln kommer jag att gå igenom hur du enkelt skapar ett redigeringssystem med hjälp av jQuery.
Det jag menar med ett redigeringssystem är att man ska kunna klicka på en viss text på sidan och redigera den på plats helt enkelt. Jag kommer att använda mig av lightbox effekt. Jag har tidigare skrivit en artikel om lightbox effekten här på aspkoll.se, artikeln heter "jQuery - En enkel lightbox effekt" om du vill veta mer om det.
Målet med artikeln
Vi vill redigera text på sidan genom att bara klicka på den. När man klickar på texten så ska ett formulär dyka upp och där ska vi kunna redigera vår text. När vi trycker på spara så ska texten ändras på sidan.
Vi vil inte att all text ska kunna ändras, utan bara några utvalda stycken. Det är därför vi kommer att göra följande. Endast text som har en CSS klass som heter "makeEditable" kommer att gå att redigera. Klickar man på annan text så kommer inget att hända. Inget kommer att hända heller om man klickar på en bild med samma klassnamn.
Att tänka på innan
Den här artikeln kommer inte att gå igenom hur du sparar texten sen i databasen eller liknande. Jag kommer bara att koncentrera mig på funktionalitetsbiten, alltså att göra så att man kan redigera, och att resultatet visas direkt. Det du kan lägga till är att ändringen sparas i databasen eller liknande så när man besöker sidan igen så har allting sparats.
Jag kommer inte heller att gå igenom lightbox effekten, för det finns redan en artikel om det. Jag går snabbt förbi det fram till jQuery koden för detta projekt.
Demo
Gör du allt korrekt i denna artikel så kommer slutprodukten att se ut så här:
http://www.aspkoll.se/sandbox/lightbox-edit-text-1/
XHTML koden
<div id="lightbox-panel"></div>
<div id="lightbox"></div>
<h1 class="makeEditable">Testsida</h1>
<p class="makeEditable">Testar att skriva något här!</p>
<img src="bild.jpg" width="200" height="200" border="1" alt="klicka" class="makeEditable" />
#lightbox {
display:none;
background:#000;
opacity:0.9;
filter:alpha(opacity=90);
position:absolute;
top:0;
left:0;
min-width:100%;
min-height:100%;
z-index:1000;
}
#lightbox-panel{
display:none;
position:fixed;
top:100px;
left:50%;
margin-left:-200px;
background:#fff;
padding:10px 15px;
border:2px solid #ccc;
z-index:1001;
}
#lightbox-panel #editText {
width: 400px;
padding: 5px;
}(function($){
...HÄR LÄGGER VI FUNKTIONERNA...
})(jQuery);$.fn.makeEditable = function(){
var target = $(this);
var content = target.text();
if(content.length>0){ $.fn.lightboxOn(target, content); }
}$.fn.lightboxOn = function(target, content){
$('#lightbox, #lightbox-panel').fadeIn(300);
$('#lightbox-panel').html('<input type="text" id="editText" /><input type="button" id="editSubmit" value="Spara" />')
.find('#editText').val(content).parent()
.find('#editSubmit').click(function(){
target.text($('#editText').val());
$.fn.lightboxOff();
});
}.find('#editText')$.fn.lightboxOff = function(){
$('#lightbox, #lightbox-panel').fadeOut(300);
$('#lightbox-panel #editText').val('');
}$(function(){
$('.makeEditable').click(function(){ $(this).makeEditable(); }).css({'cursor':'pointer'});
$('#lightbox').click(function(){ $(this).lightboxOff(); });
});(function($){
$.fn.makeEditable = function(){
var target = $(this);
var content = target.text();
if(content.length>0) { $.fn.lightboxOn(target, content); }
}
$.fn.lightboxOn = function(target, content){
$('#lightbox, #lightbox-panel').fadeIn(300);
$('#lightbox-panel').html('<input type="text" id="editText" /><input type="button" id="editSubmit" value="Spara" />')
.find('#editText').val(content).parent()
.find('#editSubmit').click(function(){
target.text($('#editText').val());
$.fn.lightboxOff();
});
}
$.fn.lightboxOff = function(){
$('#lightbox, #lightbox-panel').fadeOut(300);
$('#lightbox-panel #editText').val('');
}
})(jQuery);
$(function(){
$('.makeEditable').click(function(){ $(this).makeEditable(); }).css({'cursor':'pointer'});
$('#lightbox').click(function(){ $(this).lightboxOff(); });
});Skapades: 2009-11-15 12:41:13
Skribent: Shadi
Lästs 1418 gånger
Betyg: 0 (artikeln har endast 0 röster, det krävs minst 5 för ett betyg)
Ingen har kommenterat denna artikel än.