26. maj 2004 - 16:59
Der er
10 kommentarer og 1 løsning
Validering af ubekendt antal felter
Jeg har følgende ASP kode, hvor der kan komme et vilkårligt antal rækker. <form action="O_Check3.asp" method="post" name="form1"> <% while lines < xxx %> <input name="qty<%=lines%>" type="text" value="<%=RQty%"> <input id="Dato<%=lines%>" name="Date<%=lines%>"> <input name="lines" type="hidden" value="<%=lines%>"> <% lines + 1 wend %> <input name="Continue" type="submit" value="Continue -->"> Hvordan checker jeg dato1, dato2, osv. for datoformatet dd-mm-yyyy på alle datofelterne, og kan man få javascriptet til at placere sig på den første dato med fejl ?
Annonceindlæg tema
Offentlig digitalisering
Fra effektivisering til digital suverænitet. Hvordan skaber det offentlige en digital fremtid med AI, sikkerhed og kontrol i centrum?
<script type="text/javascript"> function valider(f){ e = f.elements; for(i=0;e.length>i;i++){ if(e[i].name.indexOf('Date')==0&&(!e[i].value.match(/^\d\d-\d\d-\d{4}$|/)){ alert('Fejl i datoformat'); e[i].focus(); return false; } } return true; } </script> <form action="O_Check3.asp" method="post" name="form1" onsubmit="return valider(this)"> -- bemærk, at jeg har ladet den checke for gyldig dato eller tomt felt !-)
Jeg kan desværre ikke få det til at virke, den loader bare den nye side. Og jeg kan desværre ikke lige gennemskue koden. <html> <head> <script type="text/javascript"> function valider(f){ e = f.elements; for(i=0;e.length>i;i++){ if(e[i].name.indexOf('Date')==0&&(!e[i].value.match(/^\d\d-\d\d-\d{4}$|/)){ alert('Fejl i datoformat'); e[i].focus(); return false; } } return true; } </script> </head> <body> <form action="1.asp" method="post" name="form1" onsubmit="return valider(this)"> <% lines = 1 while lines < 6 %> <input name="qty<%=lines%>" type="text" value="<%=lines%>"> <input id="Dato<%=lines%>" name="Date<%=lines%>"> <input name="lines" type="hidden" value="<%=lines%>"> <br> <% lines = lines + 1 wend %> <input name="Continue" type="submit" value="Continue -->"> </body> </html>
-- du mangler </form> !-) <input name="Continue" type="submit" value="Continue -->"> </form> </body> </html>
Er sat ind, men det virker stadig ikke. Er det fordi jeg er en JS knold eller hvad ! ;-)
Du har bemærket, at jeg har tilladt at felterne er tomme ...
Lige meget hvad jeg sætter ind i felterne godkender den det, så der må være en fejl. Mit bud er i disse to linier : if(e[i].name.indexOf('Date')==0&&(!e[i].value.match(/^\d\d-\d\d-\d{4}$|/)){ og <input id="Dato<%=lines%>" name="Date<%=lines%>"> Hvis formen heller ikke skal acceptere blanke er det så "$|" der skal fjernes ?
Jeg tror jeg har fundet fejlen, ved at ændre på linierne i JS og formen : if(e[i].id.indexOf('Date')==0&&(!e[i].value.match(/^\d\d-\d\d-\d{4}/))){ og <input id="Date" name="Date<%=lines%>"> >> roenving : læg lige et svar så få du point, for at lave det meste af arbejdet.
Men kan det lade sig gøre selvom man har forskellige id's og names ? <input id="Date<%=lines%>" name="Date<%=lines%>"> id name date1 date1 date2 date2 . . . .
Ja, det er fuldt lovligt at have forskellig id og name !-) -- og velbekomme '-)
-- og jeg takker for point ;~}
Vi tilbyder markedets bedste kurser inden for webudvikling