/ Forside / Teknologi / Udvikling / Java Scripts / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Java Scripts
#NavnPoint
molokyle 5410
Klaudi 2799
smorch 2439
kim 1360
Harlekin 1134
bentjuul 984
gibson 800
severino 695
Random 675
10  konsulent.. 626
Firefox, problemer med onsubmit i formular
Fra : Ulla Djurhuus


Dato : 09-08-05 11:32

Hej
Jeg er ved at teste mine sider i Firefox og er stødt på et
problem i en formular.
I et felt i formularen skal der indtastes en dato i et bestemt
format.
Der skal testes både for at feltet ikke er tomt, og for at
datoformatet er i orden (i et vist omfang) før der må sendes.
I IE og i Opera 7 virker det storartet, brugeren kan ikke komme
videre til svarsiden før det korrekte datoformat er indtastet.
I Firefox har jeg derimod problemer.
Den virker fint nok med "ikke tomt felt" - hvilket ikke er så
mærkeligt, da det er onsubmit betingelsen.
Men hvis der indtastets forkert datoformat giver den godt nok den
ønskede alert, men den gå også videre til svarsiden.
Jeg mener problemet skal løses ved at lægge alle betingelserne
ind som onsubmit betingelser, men har ikke kunnet få det til at
virke.
Jeg har sat formularsiden og svarsiden op i minniformat se
http://www.broby.dk/arrangement/form.html
UDU

--
Vil du lære at kode HTML, XHTML, CSS, SSI, ASP eller ASP.NET?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

 
 
Ryan Kristensen (12-08-2005)
Kommentar
Fra : Ryan Kristensen


Dato : 12-08-05 00:12

On Tue, 09 Aug 2005 12:31:30 +0200, Ulla Djurhuus <fcweb@broby.dk> wrote:

> I et felt i formularen skal der indtastes en dato i et bestemt
> format.
> Der skal testes både for at feltet ikke er tomt, og for at
> datoformatet er i orden (i et vist omfang) før der må sendes.

Dette gøres nok lettest med et RegEx:
function check(myForm) {
if (!myForm.elements['dag'].value.match(/\d{2}-\d{2}-\d{4}/)) {
alert('Ikke et lovligt dato format\nskriv f.eks. 08-10-2005');
return false;
}
}

Og kald funktionen således:
<form action="" method="post" onsubmit="return check(this);">

Dette forhindre selvfølgelig ikke, at den godkender 45-65-0000, hvis du
også vil teste det, kan du bruge dette:
var myData = myForm.elements['dag'].value.split('-');
var myDate = new Date(myData[2],myData[1]-1,myData[0]);
if (myDate.getDate() != myData[0] || myDate.getMonth()+1 != myData[1] ||
myDate.getYear() != myData[2]) {
alert('Dato ikke accepteret.');
return false;
}

På den måde vil javascript forsøge at omdanne det indtastede til en dato,
og derefter tjekke om den dato er lig med den indtastede.

Har du i øvrigt overvejet at benytte 3 select bokse?
<label for="dag">Dag</label><select name="dag">
<option>1</option>
<option>2</option>
<option>3</option>
<option>4</option>
</select>
<label for="month">Måned</label><select name="month">
<option>Januar</option>
<option>Februar</option>
<option>Marts</option>
</select>
<label for="year">År</label><select name="year">
<option>2000</option>
<option>2001</option>
<option>2002</option>
</select>

På den måde slipper du for at bekymre dig om, om brugerne indtaster datoen
på den måde, _du_ har bestemt, er den korrekte måde.

--
Ryan Kristensen

Ulla Djurhuus (15-08-2005)
Kommentar
Fra : Ulla Djurhuus


Dato : 15-08-05 10:52

> Dette gøres nok lettest med et RegEx:
> function check(myForm) {
> if (!myForm.elements['dag'].value.match(/\d{2}-\d{2}-\d{4}/)) {
> alert('Ikke et lovligt dato format\nskriv f.eks. 08-10-2005');
> return false;

Dette forslag acceptere også en " dato" der hedder aaaaaaaa

Dit andet forslag giver fejl for JavaScript ved kørselen.

> Har du i øvrigt overvejet at benytte 3 select bokse?

Det ville desværre fylde for meget på siden (det jeg har lagt ud er jo kun en
mindre del ) og der skal stadig testes for tomme felter.



--
Vil du lære at kode HTML, XHTML, CSS, SSI, ASP eller ASP.NET?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

Ryan Kristensen (15-08-2005)
Kommentar
Fra : Ryan Kristensen


Dato : 15-08-05 12:32

On Mon, 15 Aug 2005 11:52:10 +0200, Ulla Djurhuus <fcweb@broby.dk> wrote:

> Dette forslag acceptere også en " dato" der hedder aaaaaaaa

Nej, det gør det nu ikke hos mig. Det lyder som om du slet ikke får
afviklet scriptet.
For aaaaaaaa består ikke af 2 cifre, 1 bindestreg, 2 cifre, 1 bindestreg
og 4 cifre, så hvis scriptet er indsat korrekt, så vil den ikke godtage
andre variationer.
Må jeg se en side, hvor du har forsøgt at indsætte scriptet?

> Dit andet forslag giver fejl for JavaScript ved kørselen.

Nej, dette kan jeg heller ikke få til at give fejl.
Endnu engang: Må jeg se en side, hvor du har forsøgt at indsætte scriptet?

>> Har du i øvrigt overvejet at benytte 3 select bokse?
>
> Det ville desværre fylde for meget på siden (det jeg har lagt ud er jo
> kun en
> mindre del ) og der skal stadig testes for tomme felter.

Det kommer jo bare an på, at man designer siden, så der er plads til 3
select-bokse. - Så meget fylder de heller ikke.

--
Ryan Kristensen

Søg
Reklame
Statistik
Spørgsmål : 177552
Tips : 31968
Nyheder : 719565
Indlæg : 6408849
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste