24. oktober 2003 - 00:35Der er
6 kommentarer og 1 løsning
Hvorfor virker denne validering ikke? jeg vedlægger functionerne
//denne bliver ikke kørt?
function MM_validateForm() { //v3.0 var i,p,q,nm,test,num,min,max,errors='',args=MM_validateForm.arguments; for (i=0; i<(args.length-2); i+=3) { test=args[i+2]; val=MM_findObj(args[i]); if (val) { nm=val.name; if ((val=val.value)!="") { if (test.indexOf('isEmail')!=-1) { p=val.indexOf('@'); if (p<1 || p==(val.length-1)) errors+='- '+nm+' skal være en gyldig email-adresse.\n'; } else if (test!='R') { num = parseFloat(val); if (val!=''+num) errors+='- '+nm+' skal være et tal.\n'; if (test.indexOf('inRange') != -1) { p=test.indexOf(':'); min=test.substring(8,p); max=test.substring(p+1); if (num<min || max<num) errors+='- '+nm+' skal være et tal mellem '+min+' og '+max+'.\n'; } } } else if (test.charAt(0) == 'R') errors += '- '+nm+' skal udfyldes.\n'; } } if (errors) alert('Følgende fejl opstod:\n'+errors); document.MM_returnValue = (errors == ''); }
//denne her virker ok function Confirm() { if (!confirm("Er du sikker på at du vil tilmelde dig dette arrangement?")) { return false; }
<script language="JavaScript"> <!-- function MM_findObj(n, d) { //v3.0 var p,i,x; if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) { d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);} if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n]; for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document); return x; }
function MM_validateForm() { //v3.0 var i,p,q,nm,test,num,min,max,errors='',args=MM_validateForm.arguments; for (i=0; i<(args.length-2); i+=3) { test=args[i+2]; val=MM_findObj(args[i]); if (val) { nm=val.name; if ((val=val.value)!="") { if (test.indexOf('isEmail')!=-1) { p=val.indexOf('@'); if (p<1 || p==(val.length-1)) errors+='- '+nm+' skal være en gyldig email-adresse.\n'; } else if (test!='R') { num = parseFloat(val); if (val!=''+num) errors+='- '+nm+' skal være et tal.\n'; if (test.indexOf('inRange') != -1) { p=test.indexOf(':'); min=test.substring(8,p); max=test.substring(p+1); if (num<min || max<num) errors+='- '+nm+' skal være et tal mellem '+min+' og '+max+'.\n'; } } } else if (test.charAt(0) == 'R') errors += '- '+nm+' skal udfyldes.\n'; } } if (errors) alert('Følgende fejl opstod:\n'+errors); document.MM_returnValue = (errors == ''); }
function Confirm() { if (!confirm("Er du sikker på at du vil tilmelde dig dette arrangement?")) { return false; }
Set Conn = Server.CreateObject("ADODB.connection") Conn.ConnectionString = Application("db") Conn.Open set rs = Server.CreateObject("ADODB.recordset") rs.Open "Select * From medlemmer Where medlemsnr = "&session("user_id")&" ", conn
tekst = tekst & CH1 tekst = tekst & CH2 tekst = tekst & CH3 tekst = tekst & CH4 tekst = tekst & CH5 tekst = tekst & CH6 tekst = tekst & CH7 tekst = tekst & CH8 tekst = tekst & CH9 tekst = tekst & CH10 & _
"<br><input value=""Send tilmelding"" type=submit></form>" else tekst = tekst & ("<span class=sti>Arrangementet er ikke klar for tilmelding!</span>") end if
Jeg kan ikke give mere af koden end dette, håber du kan hjælpe mig frem ti lhvad fejlen kunne være. Den kører den første (confim) men ikke den anden, når man klikker ja eller nej ved dialogen [Er du sikker på at du vil tilmelde dig dette arrangement?] Den kører ikke MM_validateForm?
Først og fremmest har du to steder et form-tag, det er vel ikke meningen?
Du skal udskifte det der står i onSubmit i dit/dine form-tags med: MM_validateForm('Medlemsnummer','','RinRange10000:99999','Navn','','R','Firma','','R','Aktivitet','','R','Adresse','','R','Postnummer/By','','R','Email','','NisEmail','Telefonnummer','','RisNum');return document.MM_returnValue
og så skal du ændre funktionen MM_validateForm til: function MM_validateForm() { //v3.0
if (!confirm("Er du sikker på at du vil tilmelde dig dette arrangement?")) { return false; }
var i,p,q,nm,test,num,min,max,errors='',args=MM_validateForm.arguments; for (i=0; i<(args.length-2); i+=3) { test=args[i+2]; val=MM_findObj(args[i]); if (val) { nm=val.name; if ((val=val.value)!="") { if (test.indexOf('isEmail')!=-1) { p=val.indexOf('@'); if (p<1 || p==(val.length-1)) errors+='- '+nm+' skal være en gyldig email-adresse.\n'; } else if (test!='R') { num = parseFloat(val); if (val!=''+num) errors+='- '+nm+' skal være et tal.\n'; if (test.indexOf('inRange') != -1) { p=test.indexOf(':'); min=test.substring(8,p); max=test.substring(p+1); if (num<min || max<num) errors+='- '+nm+' skal være et tal mellem '+min+' og '+max+'.\n'; } } } else if (test.charAt(0) == 'R') errors += '- '+nm+' skal udfyldes.\n'; } } if (errors) alert('Følgende fejl opstod:\n'+errors); document.MM_returnValue = (errors == ''); }
For det første er der vel ikke nogen grund til at opfinde en confirm-funktion, som findes i forvejen ...
-- ihvertfald er det ikke hensigtsmæssigt at genbruge funktionsnavne selv om man ved at bruge et stort bogstav differentierer dem fra de native funktioner ...
Men denne onsubmit _afslutter_ evalueringen med 'return Confirm', så selvfølgelig udføres valideringen ikke ...
<form action='tilmeld.asp' method='post' onSubmit=""MM_validateForm('Medlemsnummer','','RinRange10000:99999','Navn','','R','Firma','','R','Aktivitet','','R','Adresse','','R','Postnummer/By','','R','Email','','NisEmail','Telefonnummer','','RisNum');return (confirm("Er du sikker på at du vil tilmelde dig dette arrangement?")&&document.MM_returnValue)"">"
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.