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
Cloud & AI
I dette særtema ser vi på, hvordan cloud og AI bliver fundamentet for virksomhedernes digitale forretning, og hvordan de nye muligheder for automatisering og forretningsværdi kan udnyttes uden at miste overblik, sikkerhed og menneskelig kontrol.
<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