webForumDet fria alternativet

Hjälp med form kontroll.

JavaScriptur Javascript

12 svar · 615 visningar · startad av ConnyFox

Medlem sedan aug. 20011 087 inlägg
Frågan#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.

Medlem sedan dec. 20025 483 inlägg
#2

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>

:)

Medlem sedan aug. 20011 087 inlägg
#3

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!

Medlem sedan dec. 20025 483 inlägg
#4

Ok, två frågor: Vad har dessa element för namn? Skall de endast kontrolleras så att de ej är tomma?

Medlem sedan aug. 20011 087 inlägg
#5

Fälten heter fornamn och efternamn och skall abra kollas så man fyllt i något i dom ja :D

Medlem sedan dec. 20025 483 inlägg
#6
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!")) 
    );
}
Medlem sedan aug. 20011 087 inlägg
#7

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

Medlem sedan dec. 20025 483 inlägg
#8
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"))
    );
}

:)

Medlem sedan aug. 20011 087 inlägg
#9

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

Medlem sedan aug. 20011 087 inlägg
#10

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

Medlem sedan aug. 20011 087 inlägg
#11

Ingen som kan hjälpa mig med detta?

Medlem sedan apr. 20031 660 inlägg
#12

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);
}
Medlem sedan aug. 20011 087 inlägg
#13

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?

137 ms totalt · 3 externa anrop · v20260731065814-full.b746b907
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
134 ms — hämta tråd, inlägg och bilagor (db)