Gå til innhold

form validering før innsending


Anbefalte innlegg

Jeg har noen forms som skal sendes inn for å bli lagt inn i en database.

 

Men - jeg ønsker å få en confirm box først som ber brukeren bekrefte at han skal legge inn, i dette tilfellet, nyheten.

 

har prøvd å hekte på onsubmi="xx()"" på form taggen men det funker ikke.

 

Har ikke php noen mulighet til å kjøre ut dialogbokser slik at jeg kan få brukt den naturlige if statementen til php. blir kødd når jeg blander javascript inn i dette iallefall

 

 

en annen ting ... hvorfor stopper ikke php eksekveringen dersom jeg sier document.go(-1) i en if statement? slik jeg ser det så eksekveres koden uansett i bakgrunnen, før brukeren har valgt noe i dialogen.

Lenke til kommentar
Videoannonse
Annonse
en annen ting ... hvorfor stopper ikke php eksekveringen dersom jeg sier document.go(-1) i en if statement? slik jeg ser det så eksekveres koden uansett i bakgrunnen, før brukeren har valgt noe i dialogen.

document.go(-1) sier bare at scriptet skal gå tilbake til den forrige siden og funker (såvidt jeg vet) kun på linker hvor brukeren aktivt trykker på en knapp.

 

for å stanse et script fra å kjøres midt i en if-statement bør du heller bruke en die eller exit statement. begge disse avslutter scriptet og kan brukes om hverandre.

Lenke til kommentar

når det gjelder confirm-boksen du snakker om kom jeg på en idé. du kan legge nyheten inn i en fil (ved hjelp av fwrite. deretter kan du vise innholde i filen (ved hjelp av fopen) og spørre brukeren om det er riktig at den gitte artikkelen legges ut.

 

nå vet ikke jeg om du bruker database eller ikke, men du kunne videre gjøre det slik at stien/url'en til artikkelen legges i en database hvis brukeren aksepterer at artikkelen/nyheten skal legges ut slik den vises...

Lenke til kommentar
når det gjelder confirm-boksen du snakker om kom jeg på en idé. du kan legge nyheten inn i en fil (ved hjelp av fwrite. deretter kan du vise innholde i filen (ved hjelp av fopen) og spørre brukeren om det er riktig at den gitte artikkelen legges ut.

 

nå vet ikke jeg om du bruker database eller ikke, men du kunne videre gjøre det slik at stien/url'en til artikkelen legges i en database hvis brukeren aksepterer at artikkelen/nyheten skal legges ut slik den vises...

Eh? Hørtes tungvint ut. :dontgetit:

Han kan jo bare lagre form-dataen inn i hidden-inputs, og vise en forhånds-greie samt confirm-knapp.

Det jeg mener er at det er unødvendig å lagre noe i en fil, når det allerede ligger i $_POST/$_GET.

Lenke til kommentar

Litt enig med sven-o at det høres ut som litt mye jobb.

Du kan bare lagre det inn i en session, er det mange felter kan du lagre det som en array og den i sessionen. Så kan du bare vise sessionen til brukeren og legge en inn i databasen - så slipper du til og med å legge det i et nytt skjema.

Lenke til kommentar
kan du ikke bare ha en onClick i submit-knappen da? Slik:
<input type="submit" value="Send" onclick="confirm('Sikker på at du vil sende skjemaet?')">

må bruke onsubmit om det skal ha noen hensikt,

 

onsubmit="return formvalidator()"

 

formvalidator kan da returnere false og stoppe innsendelse av form

Lenke til kommentar
sikker?

 

edit: slengte meg rundt og prøvde selv, stemmer det du sier, jeg står korrigert

jeg kan altså skrive noe slikt som dette?

 

<script type="text/javascript">

function validate()

{

var value = confirm("Er du sikker?");

if (value == false)

return false;

}

 

 

også onclick="validate()"

 

hvorfor funker ikke dette? skjema sendes uansett

Lenke til kommentar

Det går ikke ann å avbryte innleggingen av nyhet med det scriptet der.

 

Trykker du avbryt i confirm boxen så eksekveres form action="test.php" skriptet uansett. Normalscenario her ville jo være at den returnerer til innleggingssiden.

Endret av joenohr
Lenke til kommentar
Min feil. Det skal være slik:

onclick="return confirm('Er du sikker?')"

Det fungerer heller ikke.

 

Det som jeg imidlertid har fått til å funke er:

 

<script language="javascript">

 

function validate(){

 

var test = confirm("Vil du virkelig publisere?");

 

if(test == true)

document.nyhet.hidden.value = 1;

 

else if(test == false)

document.nyhet.hidden.value = 0;

 

}

</script>

 

 

 

<input type="hidden" name="hidden">

<input type="submit" value="Publiser!" onClick="validate();">

<input type="reset" value="Tøm skjema!">

 

Deretter sjekker jeg om 0 eller 1 er satt i variabelen $hidden i php fila som prosesserer formen.

 

 

Ingen elegant løsning... så hvis noen har en lettfattelig og enkel løsning som gjør jobben så vil jeg VELDIG gjerne høre om den :D

Lenke til kommentar
Slik ser knappen min ut, og den gjør _akkurat_det samme.
<input type="submit" value="Send" onclick="return confirm('Er du sikker?');">

Testet i IE, Opera, og Mozilla!

Blir ikke rett hos meg !!

 

Her blir det publisert uansett!

Når jeg trykker på AVBRYT i mitt eksempel returnerer den til formen, med verdien beholdt i formen. Trykker jeg OK så publiseres det.

 

I ditt eksempel så går den tilbake med avbryt, men nyheten blir publisert anyways.

Lenke til kommentar
Slik ser knappen min ut, og den gjør _akkurat_det samme.
<input type="submit" value="Send" onclick="return confirm('Er du sikker?');">

Testet i IE, Opera, og Mozilla!

Blir ikke rett hos meg !!

 

Her blir det publisert uansett!

Når jeg trykker på AVBRYT i mitt eksempel returnerer den til formen, med verdien beholdt i formen. Trykker jeg OK så publiseres det.

 

I ditt eksempel så går den tilbake med avbryt, men nyheten blir publisert anyways.

Kan du snippe ut alt fra form til /form på kilden din? Vedder på at jeg finner feil!

Lenke til kommentar

Jepp - her kommer den!

 

 

<form name="nyhet" action="generer_nyhet.php" method="POST">

 

<p class="standardtekst"> Overskrift:<br>

<input type="text" name="overskrift" size="40">

</p>

 

<br>

 

<p class="standardtekst">Start-dato:<br>

<input type="text" name="startdato" size="10"><a href="javascript:showCal ('Calendar1')"><font color="white">_</font><img src="../../bilder/kalender_ikon.gif" border="0"></a>

</p>

 

<p class="standardtekst"> Slutt-dato:<br>

<input type="text" name="sluttdato" size="10"><a href="javascript:showCal('Calendar2')"><font color="white">_</font><img src="../../bilder/kalender_ikon.gif" border="0"></a>

</p>

 

<p class="standardtekst"> Nyhetstekst:<br>

<textarea rows="10" cols="100" name="nyheten"></textarea>

</p>

 

<script language="JavaScript1.2" defer>

var config = new HTMLArea.Config();

 

config.width='1300px';

config.height='250px';

 

HTMLArea.replace('nyheten', config);

 

 

</script>

 

<br>

 

<input type="hidden" name="hidden">

<input type="submit" value="Publiser!" onClick="validate();"> <input type="reset" value="Tøm skjema!">

 

</form>

 

 

hehe... masse annet her også som du ser :D

Lenke til kommentar

Dette fungerer hos meg(klipp det ut, og lim det inn hos deg):

<form name="nyhet" action="generer_nyhet.php" method="POST">

<p class="standardtekst"> Overskrift:<br>
<input type="text" name="overskrift" size="40">
</p>

<br>

<p class="standardtekst">Start-dato:<br>
<input type="text" name="startdato" size="10"><a href="javascript:showCal ('Calendar1')"><font color="white">_</font><img src="../../bilder/kalender_ikon.gif" border="0"></a>
</p>

<p class="standardtekst"> Slutt-dato:<br>
<input type="text" name="sluttdato" size="10"><a href="javascript:showCal('Calendar2')"><font color="white">_</font><img src="../../bilder/kalender_ikon.gif" border="0"></a>
</p>

<p class="standardtekst"> Nyhetstekst:<br>
<textarea rows="10" cols="100" name="nyheten"></textarea>
</p>

<script language="JavaScript1.2" defer>
var config = new HTMLArea.Config();

config.width='1300px';
config.height='250px';

HTMLArea.replace('nyheten', config);


</script>

<br>

<input type="hidden" name="hidden">
<input type="submit" value="Publiser!" onClick="return confirm('Er du sikker?');"> <input type="reset" value="Tøm skjema!">

</form>

Den _eksakte_ koden kan du teste her, om du ikke tror meg...

http://sven-erik.net/test.htm

Du har btw feil i det HTMLArea scriptet, men det for bli en annen topic, i javascript-avdelingen.

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...