Gå til innhold

form validering før innsending


Anbefalte innlegg

Skrevet

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.

Videoannonse
Annonse
Skrevet
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.

Skrevet

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...

Skrevet

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?')">

Skrevet
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.

Skrevet

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.

Skrevet
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

Skrevet (endret)

onclick fungerer det også. ;)

<input type="submit" value="Dette skjemaet blir aldri sendt" onclick="return false;">

*here we go again....*

Endret av sven-o
Skrevet
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

Skrevet (endret)

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
Skrevet
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

Skrevet

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!

Skrevet
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.

Skrevet
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!

Skrevet

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

Skrevet

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.

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...