C ConnyFox Medlem sedan aug. 2001 1 087 inlägg Frågan 29 nov. 2004 08:13 #1 har sökt i forumet men inte hittat något som jag fått att fungera bra så nu ber jag er istället.
jag har ett formulär add_kund där jag vill kontrollera så att 2st vanliga textfält inte är tomma, att ett fält bara innehåller siffror samt att ett fält innehåller ett @ (för att kontrollera giltlig email.
Om det är möjligt så skulle jag även vilja ha en koll så att ett fält är ett giltligt personnr. Någon som sitter på något liknande och har lust att modifiera lite så det fungerar för mig?
kan inte javascript överhuvudtaget.
P Peter S Medlem sedan dec. 2002 5 483 inlägg Med hjälp av Jojoxx personnummerkontroll i skriptavdelningen, slängde jag ihop följande:
// Object 'personnummer' by member Jojoxx ([url]www.jojoxx.net[/url]) at webForum.nu
function personnummer(nr){
this.valid=false;
if(!nr.match(/^(\d{2})(\d{2})(\d{2})\-(\d{4})$/)){ return false; }
this.now=new Date(); this.nowFullYear=this.now.getFullYear()+""; this.nowCentury=this.nowFullYear.substring(0,2); this.nowShortYear=this.nowFullYear.substring(2,4);
this.year=RegExp.$1; this.month=RegExp.$2; this.day=RegExp.$3; this.controldigits=RegExp.$4;
this.fullYear=(this.year*1<=this.nowShortYear*1)?(this.nowCentury+this.year)*1:((this.nowCentury*1-1)+this.year)*1;
var months = new Array(31,28,31,30,31,30,31,31,30,31,30,31);
if(this.fullYear%400==0||this.fullYear%4==0&&this.fullYear%100!=0){ months[1]=29; }
if(this.month*1>12||this.day*1>months[this.month*1-1]){ return false; }
this.alldigits=this.year+this.month+this.day+this.controldigits;
var nn="";
for(var n=0;n<this.alldigits.length;n++){ nn+=((((n+1)%2)+1)*this.alldigits.substring(n,n+1)); }
this.checksum=0;
for(var n=0;n<nn.length;n++){ this.checksum+=nn.substring(n,n+1)*1; }
this.valid=(this.checksum%10==0)?true:false;
this.sex=parseInt(this.controldigits.substring(2,3))%2;
}
function validate(obj){
return (
Boolean(obj.elements["email"].value.indexOf('@') != -1 || alert("E-postadress innehåller ej '@'")) &&
Boolean(/^\d+$/.test(obj.elements["siffror"].value) || alert("Endast siffror")) &&
Boolean(new personnummer(obj.elements["pnr"].value).valid || alert("Ej giltigt personnummer"))
);
}
<form onsubmit="return validate(this)">
<input type="text" name="email">
<input type="text" name="siffror">
<input type="text" name="pnr">
</form>
:)
C ConnyFox Medlem sedan aug. 2001 1 087 inlägg Fungerar perfekt men jag skulle behöva lägga till koll av vanliga textfält med så dom inte är tomma.
Tack på förhand!
P Peter S Medlem sedan dec. 2002 5 483 inlägg Ok, två frågor: Vad har dessa element för namn? Skall de endast kontrolleras så att de ej är tomma?
C ConnyFox Medlem sedan aug. 2001 1 087 inlägg Fälten heter fornamn och efternamn och skall abra kollas så man fyllt i något i dom ja :D
P Peter S Medlem sedan dec. 2002 5 483 inlägg function validate(obj){
return (
Boolean(obj.elements["email"].value.indexOf('@') != -1 || alert("E-postadress innehåller ej '@'")) &&
Boolean(/^\d+$/.test(obj.elements["siffror"].value) || alert("Endast siffror")) &&
Boolean(new personnummer(obj.elements["pnr"].value).valid || alert("Ej giltigt personnummer")) &&
Boolean(obj.elements["fornamn"].value != "" || alert("Inget förnamn ifyllt!")) &&
Boolean(obj.elements["efternamn"].value != "" || alert("Inget efternamn ifyllt!"))
);
}
C ConnyFox Medlem sedan aug. 2001 1 087 inlägg oook har ett önskemål till den skall säga till om man inte fyllt i något utav fälten telehem och telemob. båda behöver altså inte vara ifyllda men minst 1 utav dom
P Peter S Medlem sedan dec. 2002 5 483 inlägg function validate(obj){
return (
Boolean(obj.elements["email"].value.indexOf('@') != -1 || alert("E-postadress innehåller ej '@'")) &&
Boolean(/^\d+$/.test(obj.elements["siffror"].value) || alert("Endast siffror")) &&
Boolean(new personnummer(obj.elements["pnr"].value).valid || alert("Ej giltigt personnummer")) &&
Boolean(obj.elements["fornamn"].value != "" || alert("Inget förnamn ifyllt!")) &&
Boolean(obj.elements["efternamn"].value != "" || alert("Inget efternamn ifyllt!")) &&
Boolean((obj.elements["telehem"].value != "" || obj.elements["telemob"].value != "") || alert("Vänligen ange åtminstone ett giltigt telefonnummer"))
);
}
Om du vill ha en simpel giltighetskontroll på dessa fält kan du använda:
function validate(obj){
return (
Boolean(obj.elements["email"].value.indexOf('@') != -1 || alert("E-postadress innehåller ej '@'")) &&
Boolean(/^\d+$/.test(obj.elements["siffror"].value) || alert("Endast siffror")) &&
Boolean(new personnummer(obj.elements["pnr"].value).valid || alert("Ej giltigt personnummer")) &&
Boolean(obj.elements["fornamn"].value != "" || alert("Inget förnamn ifyllt!")) &&
Boolean(obj.elements["efternamn"].value != "" || alert("Inget efternamn ifyllt!")) &&
Boolean(
(/\d{2,4}(\s|-|\\)?(\d\s*){5,8}/.test(obj.elements["telehem"].value) ||
/\d{3}(\s|-|\\)?(\d\s*){7}/.test(obj.elements["telemob"].value)) ||
alert("Vänligen ange åtminstone ett giltigt telefonnummer"))
);
}
:)
C ConnyFox Medlem sedan aug. 2001 1 087 inlägg ok kommer med ett tillägg till här hehe skulle vilja ha en kontroll så att ett fält innehåller minst 5 tecken men max 500 :D
C ConnyFox Medlem sedan aug. 2001 1 087 inlägg Fick aldrig svar på den ovanstående med max 500 tecken och minst 5 tecken.
Och nu så behöver jag dessutom en förbättring för denna
Boolean(obj.elements["email"].value.indexOf('@') != -1 || alert("E-postadress innehåller ej '@'")) &&
Den var ju inte så säker på o kolla giltliga emailadresser hehe.
så går det o göra en som kollar att emailadressen ej innehåller ogiltliga tecken samt att den håller rätt format?
dvs x@x.x
C ConnyFox Medlem sedan aug. 2001 1 087 inlägg Ingen som kan hjälpa mig med detta?
J.N. Medlem sedan apr. 2003 1 660 inlägg HEJ!
Lite wf:ande gav http://www.webforum.nu/showthread.php?s=&postid=420304#post420304
Jag använder denna, med kända brister. Det finns en uppsjö på nätet, det är bara att välja vilken man önskar!
//Godkänner [email]kent.j.nilsson@m.xx.se[/email], även [email]k@m.se[/email] och [email]-@-.se[/email]
em_val = /^[a-z0-9_-]+(\.[a-z0-9_-]{1,})*@[a-z0-9_-]{1,}(\.[a-z0-9_-]{2,})*(\.[a-z]{2,4})$/i;
if (em_val.test(form.ep.value) == false){
alert("Fubbick")
form.ep.focus();
return (false);
}
C ConnyFox Medlem sedan aug. 2001 1 087 inlägg ok men hur får jag in den i min kod, vad behöver jag ändra m.m? kan inte javascript som sagt.
behöver dessutom en koll som ser till att ett fält innehåller minst 5 tecken och max 100.
Samt en kontroll att fält1 och fält2 är identiska. någon som kan?