ud for nogle af mine posts er der et G som betyder at det er et gæstebogs indlæg... hvis man så har markeret en post med et G og trykker Slet skal der komme en confirm boks frem, men hvordan gør man det?? :)
1) Noget der identificere disse G-poster.. f.eks. et id: id="gbook": <input class="none" type="checkbox" name="post_id[]" value="156" onclick="change_background(this)" id="gbook">
2) en JavaScript funktion, der afvikles FØR submit.. den kaldes med stat_g(henvisning-til-formen-indsættes-her):
function stat_g(frm) { elm = frm.elements; for(i=0; elm.length>i; i++) { if(elm[i].type == 'checkbox' && elm[i].checked && elm[i].id == "gbook") { if (!window.confirm('Ønsker du at arkivere "G"-posten: ' + elm[i].value)) elm[i].checked = false; } } }
Jeg har testet dette, og det virker i Opera v7.54 + Internet Explorer 6.. jeg tester lige med FireFox 1.0..
PS: Hvis du indsætter flere data i "id", kan du f.eks. skrive "Vil du arkivere <emnet eller navnet indsættes her>?".. Der skal man så bare splitte id-værdien op..
Jeg har ikke selv testet det, men ud fra hvad du skriver ser det ikke ud til at du helt har forstået - eller måske mig der ikke har formuleret mig korrekt :)
Der skal kun være en confirm når man vil slette posts og nogle G-posts er markeret... Der skal f.eks. ikke komme en confirm boks hvis jeg kun har markeret alm. posts :)
function stat_g(frm) { elm = frm.elements; for(i=0; elm.length>i; i++) { gid = elm[i].id; // hent id-data if( elm[i].type == 'checkbox' && elm[i].checked && gid.indexOf("gbook") > -1) // se om det er en G-post { gid = gid.split("*.*"); // split data tmp = '"' + gid[1] + '" skrevet af "' + gid[2] + '"'; // smid besked over i variablen "tmp"
// husk at det er "window.confirm", ellers virker det ikke i FireFox. if (!window.confirm('Vil du at arkivere G-posten?:\n\n' + tmp)) elm[i].checked = false; } } }
- Opdateret kode.. Hvis der er markeret G-poster, vil den spørge dig om du vil vurdere hver eneste post. Hvis du vælger "cancel", springer den direkte videre (til sletning). Ellers skal du klikke OK/Cancel (cancel fjerne X i checkbox).
Koden:
function stat_g(frm) { elm = frm.elements; AntalPoster = 0; // nulstil tælleren
// tæl antal markerede G-poster: for(g=0; elm.length>g; g++) { gid = elm[g].id; // hent id-data if( elm[g].type == 'checkbox' && elm[g].checked && gid.indexOf("gbook") > -1) // se om det er en G-post { AntalPoster = AntalPoster + 1; // læg 1 til.. } }
// Hvis antallet af poster er større end 0, vises en "confirm"-boks, // hvor du kan vælge om du vil vurdere hver eneste post. Hvis du // vælger "cancel", slettes alle poster. if (AntalPoster > 0 && window.confirm('Antal markerede G-poster: ' + AntalPoster + '\n\nVil du vurdere disse poster?')) {
for(i=0; elm.length>i; i++) { gid = elm[i].id; // hent id-data if( elm[i].type == 'checkbox' && elm[i].checked && gid.indexOf('gbook') > -1) // se om det er en G-post { gid = gid.split('*.*'); // split data tmp = '"' + gid[1] + '" skrevet af "' + gid[2] + '"'; // smid besked over i variablen "tmp"
// husk at det er "window.confirm", ellers virker det ikke i FireFox. if (!window.confirm('Vil du slette G-posten?:\n\n' + tmp)) elm[i].checked = false; } }
hov... det jeg mente var at man ikke skal vurdere hver eneste, men hvis man vælger Cancel skal den kun slette de alm posts :) man skal heller ikke gøre det for avanceret for brugeren... heheh
har forsøgt mig frem med noget her, men det virker ikke helt :( jeg har rettet en del i dit script som du nok også kan se, så jeg ved ikke om jeg har rodet for meget rundt i det... hehe...
det skal lige siges at alle mine funktioner ligger i en seperat JS fil :)
function guestbook_posts(frm) { var elm = frm.elements; var num = 0; for(g=0; elm.length>g; g++) { var gid = elm[g].id; if(elm[g].type == 'checkbox' && elm[g].checked && gid.indexOf('G') > -1) num++; }
if(num) { if(!window.confirm('Blandt de markerede posts er der '+num+' gæstebogs indlæg.\n\nVil du også slette disse?')) { for($i=0; elm.length>i; i++) { if(elm[i].type == 'checkbox' && elm[i].checked && gid.indexOf('G') > -1) elm[i].checked = false; } } }
Dvs, ved klik på Slet-knappen, skal den undersøge om der er markeret G-poster. Hvis der er, skal den spørge om man vil slette dem. Hvis man vælger nej (Cancel), skal den fjerne hakkene i G-posterne, og kun slette de normale poster. Hvis man vælger Ja (OK), skal den bare fortsætte, og derved også slette G-posterne. - Er det korrekt?
Ang "$_GET['tab']": Da det er PHP kode, skal du inkludere PHP filen. Dvs, du skal højst sandsynligt udskrive din JavaScript kode, via PHP i en PHP fil, som du inkludere filen der kalder på funktionerne :-)
Eksempel: - funktioner.php indeholder (husk: ingen "<script..></script>"!): <? echo "function mitkald(streng)" echo "{" echo "alert(streng);" echo "}" ?>
jeg kan så bare stadig ikke få min funktion til at virke :(
altså den første confirm virker fint, da man godt lave en cancel... men ved den næste confirm sletter den alle posts ligemeget om man trykker cancel :(
sådan ser min funktion ud på nuværende tidspunkt... confirmboksen hvor man vil vælge om G-posts skal slettes bliver ignoreret, for ligemeget hvad man gør bliver alle markerede posts slettet :(
function delete_posts(frm, tab) { if(window.confirm('Du er ved at slette alle markerede posts.\n\nVil du fortsætte?')) { var elm = frm.elements; var num = 0;
..det det er det eneste, det vil komme til at stå i id? (dvs ingen andre tegn) Skriv HTML koden til en checkbox EFTER at siden er indlæst (dvs, afviklet PHP koden).
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.