Avatar billede baitianlong Nybegynder
22. august 2004 - 22:05 Der er 23 kommentarer og
1 løsning

Jeg skal have en javascript confirm ind, men hvordan

Jeg har en side hvor man kan skrive et nyhedsbrev og gemme det, man kan også åbne et fra databasen og ændre i det. Når man gemmer det vil jeg gerne have at den lige kører en "Er du sikker på at du vil gemme / overskrive... osv" Men det passer ikke så godt ind i det jeg har kodet indtil videre.

Jeg har dette i toppen:

$quarter = $_POST['quarter'];
$year = $_POST['year'];
$tekst = $_POST['tekst'];
$function = $_POST['function'];

switch($function) {
    case(Save):
        saveNewsletter($tekst, $quarter, $year);
        break;
    case(Load):
        $tekst = showNewsletter($quarter, $year);
        break;
}

Og dette på knapperne "Save" og "Load":

<input type="submit" name="function" value="Save" style="width:120px;">
<input type="submit" name="function" value="Load" style="width:120px;">

Hvad skal jeg gøre ?
Avatar billede jakoba Nybegynder
22. august 2004 - 22:15 #1
indsæt det i din onsubmit i <FORM tagget
  <form ...  onsubmit="return confirm('er du sikker?') && dinAlmindeligeValidering();">

mvh JakobA
Avatar billede jakoba Nybegynder
22. august 2004 - 22:16 #2
ps, det har ikke en pind med php at gøre, du får som regel hurtigere og bedre svar hvis du spørger i rette kategori.
Avatar billede baitianlong Nybegynder
22. august 2004 - 22:20 #3
Ja, jeg ved godt det er javaScript, men det skal jo kombineres med PHP scriptet, og som regel ved folk i PHP afdelingen mere om javascript, end folk i javaScript afdelingen ved om PHP :) Men jeg bruger ikke onSubmit, men action="egenadresse.php"

Kan du uddybe lidt mere ?
Avatar billede baitianlong Nybegynder
22. august 2004 - 22:30 #4
Det er i øvrigt ikke smart på den måde her, da også "Load" knappen er en submit, og der skal den jo ikke spørge..
Avatar billede thesurfer Nybegynder
22. august 2004 - 22:30 #5
Jeg programmerer i ASP og JavaScript.. og kan lidt PHP..

Den bedste løsning, er onsubmit. Man skal nemlig svare ja/nej til at gemme, inden man gemmer.. og det er derfor bedst, at det sker på klientsiden (dvs, browseren)..

Ingen grund til at bruge ressourcer på serveren....
Avatar billede thesurfer Nybegynder
22. august 2004 - 22:34 #6
Ang save+load=submit:
Det er korrekt.. ret det til det her:

<input type="hidden" name="mode">
<input type="button" onclick="this.form.mode='save';this.form.submit();" value="Load">
<input type="button" onclick="this.form.mode='load';this.form.submit();" value="Save">

Når man klikker på Save, gemmes "save" i den skjulte box med navnet "mode"..
På PHP siden aflæser du værdien af "mode".. hvis den er "save", gemmes der.. hvis den er "load", hentes gamle data..

Husk at det (vist nok) er case-sensitive.. dvs "Save" er forskellig fra "SaVE"..
Avatar billede thesurfer Nybegynder
22. august 2004 - 22:35 #7
rettelse (kom til at bytte rundt på save og load):

<input type="hidden" name="mode">
<input type="button" onclick="this.form.mode='load';this.form.submit();" value="Load">
<input type="button" onclick="this.form.mode='save';this.form.submit();" value="Save">
Avatar billede baitianlong Nybegynder
22. august 2004 - 22:42 #8
og så:

<form action="newscomposer.php" method="post" name="f" onSubmit="confirmSend(<php print $quarter; ?>, <?php print $year; ?>);">

og:

function confirmSend(quarter, year) {
    var confirmed = confirm("Er du sikker på at du vil gemme/overskrive" + quarter + ". Quarter - " + year);
    return confirmed;
}

...eller hvad ?
Avatar billede thesurfer Nybegynder
22. august 2004 - 22:48 #9
Hvis $quarter og $year ikke er tal, skal der ' tegn udenom dem:

onSubmit="confirmSend('<php print $quarter; ?>', '<?php print $year; ?>');">

og så lige et mellemrum efter "gemme/overskrive"..
Avatar billede thesurfer Nybegynder
22. august 2004 - 22:54 #10
kommer lige i tanke om noget..

Hvis du ikke har så meget valideringskode, kan du nøjes med at putte det i onsubmit:

onsubmit="return confirm('Er du sikker på at du vil gemme/overskrive <?php print $quarter; ?>. Quarter - <?php print $year; ?>');"

PS: Du manglede et "?" til "<?php" i "<php print $quarter; ?>"..
Avatar billede baitianlong Nybegynder
22. august 2004 - 22:58 #11
Der sker intet når man trykker på "Load" eller "Save" nu... Er det måske fordi formen hedder "f", eller hvad er der galt ?
Avatar billede thesurfer Nybegynder
22. august 2004 - 22:59 #12
Skriv hele din form, som den er nu.
Avatar billede baitianlong Nybegynder
22. august 2004 - 23:02 #13
Din anden løsning med at putte det i onSubmit er fin nok, når man gemmer, men der er jo problemet at den også larmer når man trykker load.
Avatar billede baitianlong Nybegynder
22. august 2004 - 23:06 #14
Det kan dog løses, hvis man kan ændre load knappen til noget hen ad:

<input type="button" value="Load" style="width:120px;" onClick="newscomposer.php?function=Load&quarter=" + f.quarter.selectedValue + "&year=" + f.year.selectedValue>
Avatar billede baitianlong Nybegynder
22. august 2004 - 23:08 #15
...Så den ikke submitter, men reloader siden med quarter og year parametre fra formen i URL'en. Jeg ved bare ikke om der er noget, der hedder selectedValue på en select ? og om syntaxen er rigtig.
Avatar billede roenving Novice
22. august 2004 - 23:13 #16
Det skal da lige nævnes, at en hel del browsere submitter, når man trykker på en button ...

-- og en bedre metode vil nok være at ændre på action onclick, så de indbyggede funktioner kan bruges:

<input type="submit" value="Load" style="width:120px;" onClick="this.form.action='newscomposer.php?function=Load&quarter=' + f.quarter.value + '&year=' + f.year.value">
Avatar billede thesurfer Nybegynder
22. august 2004 - 23:13 #17
Så vidt jeg ved, vil IE altid larme (sige lyd), med mindre at man bruge location.reload(true)..
Avatar billede baitianlong Nybegynder
22. august 2004 - 23:22 #18
Jeg mener at den kommer med confirm tingen (og larmer således :)), uanset om man trykker save eller load, hvis begge er submit... Det ligger jo på onSubmit nu. Det samme gælder roenvings foreslag. Jeg tror jeg må gå efter min button-løsning altså:

<input type="button" value="Load" style="width:120px;" onClick="self.location.href='newscomposer.php?function=Load&quarter=' + f.quarter.value + '&year=' + f.year.value">

Jeg prøver lige...
Avatar billede baitianlong Nybegynder
22. august 2004 - 23:25 #19
Den virker fint. Jeg tror ikke der lige er en bedre løsning på dette. Men thesurfer, du har ydet en virkelig smuk indsats, og det var ikke lykkedes uden :) Så smid et svar...
Avatar billede thesurfer Nybegynder
22. august 2004 - 23:26 #20
OK :-)

Jeg tør vædde med, at roenving kommer med en eller anden rettelse, lige om lidt ;-)
Avatar billede roenving Novice
22. august 2004 - 23:29 #21
Jepz, for du skal lige tage højde for de browsere, som laver en submit, når man trykker på en button:

<input type="button" value="Load" style="width:120px;" onClick="self.location.href='newscomposer.php?function=Load&quarter=' + f.quarter.value + '&year=' + f.year.value;return false;">
Avatar billede baitianlong Nybegynder
23. august 2004 - 00:12 #22
ok, men hvad præcis ændrer det ? return false.

Hvad sker der så på en browser, der vil submitte ? :)
Avatar billede roenving Novice
23. august 2004 - 00:13 #23
Så forsøger den ikke først at submitte !-)
Avatar billede baitianlong Nybegynder
23. august 2004 - 00:16 #24
...men den loader alligevel nyhedsbrevet ind ?
Avatar billede Ny bruger Nybegynder

Din løsning...

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.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester