webForumDet fria alternativet

Hjälp med formulär kontroll

15 svar · 915 visningar · startad av ConnyFox

ConnyFoxMedlem sedan aug. 20011 087 inlägg
#1

jag har frågat långt ner i en tidigare tråd flera gånger men ingen har svarat, antar ingen orkade scrolla ner för det e ju inga svåra grejjer.

Detta är mina nuvarande kod

function validate(obj){
    return (
	Boolean(obj.elements["email"].value.indexOf('@') != -1 || alert("Ej giltlig Epost-adress"))  && 
	Boolean(/^\d+$/.test(obj.elements["postnr"].value) || alert("Endast siffror")) && 
	Boolean(new personnummer(obj.elements["personnr"].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["hemtele"].value) || 
	    /\d{3}(\s|-|\\)?(\d\s*){7}/.test(obj.elements["mobtele"].value)) || 
	    alert("Vänligen ange åtminstone ett giltigt telefonnummer"))
    );
}

jag skulle vilja ha några tillägg.
*Bättre emailkontroll, bara kolla så den innehåller @ e ju inte så bra.
*Kontroll så att två fält är identiska (lösenord, lösenord igen)
*Kontrollera så att ett fält innehåller minst 5 tecken och max 500 tecken.

tack på förhand, jag vet att detta inte är några problem för er o lösa ;)

Peter SMedlem sedan dec. 20025 483 inlägg
#2
/*
* isValidEmail() är hämtad från [url]www.jojoxx.net[/url]. Låt stå!
*/
String.prototype.isValidEmail = function(){
	return !!this.match(/^([a-zA-Z0-9]{1}([a-zA-Z0-9\.\-\_]*)[a-zA-Z0-9]{1})@([a-zA-Z0-9]{1}([a-zA-Z0-9\.\-\_]*)[a-zA-Z0-9]{1})\.([a-zA-Z]{2,4})$/)
}

function validate(obj){
    return (
	Boolean(obj.elements["email"].value.isValidEmail() || alert("Ej giltlig Epost-adress"))  && 
	Boolean(/^\d+$/.test(obj.elements["postnr"].value) || alert("Endast siffror")) && 
	Boolean(new personnummer(obj.elements["personnr"].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["hemtele"].value) || 
	    /\d{3}(\s|-|\\)?(\d\s*){7}/.test(obj.elements["mobtele"].value)) || 
	    alert("Vänligen ange åtminstone ett giltigt telefonnummer")) && 
        Boolean((obj.elements["[b]passw[/b]"].value == obj.elements["[b]passw2[/b]"].value) || alert("Lösenorden överensstämmer ej!")) && 
        Boolean((obj.elements["[b]fältets_namn[/b]"].value.length >= 5 && obj.elements["[b]fältets_namn[/b]"].value.length <= 500) || alert("5 <= Fältets längd <= 500"))
    );
}

Glöm inte att använda funktionen acceptera som slutgiltigt svar när problemet är löst.

ConnyFoxMedlem sedan aug. 20011 087 inlägg
#3

Funkade tyvärr inte helt bra..

CheguelinMedlem sedan juli 2003303 inlägg
#4

ska det vara nödvändigt med alla Boolean?

Peter SMedlem sedan dec. 20025 483 inlägg
#5

Nej.

ConnyFoxMedlem sedan aug. 20011 087 inlägg
#6

Hmm ok det där fungerade inte så bra, använder denna koden nu och funktionen dom saker som Ej fungerar är :
*Kolla så antingen hemtele eller mobtele är ifyllt.
*minst 5 tecken max 50

<script type="text/javascript">

// 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;
}

/*
* isValidEmail() är hämtad från [url]www.jojoxx.net.[/url] Låt stå!
*/
String.prototype.isValidEmail = function(){
	return !!this.match(/^([a-zA-Z0-9]{1}([a-zA-Z0-9\.\-\_]*)[a-zA-Z0-9]{1})@([a-zA-Z0-9]{1}([a-zA-Z0-9\.\-\_]*)[a-zA-Z0-9]{1})\.([a-zA-Z]{2,4})$/)
}

function validate(obj){
    return (
	Boolean(obj.elements["email"].value.isValidEmail() || alert("Ej giltlig Epost-adress"))  && 
	Boolean(/^\d+$/.test(obj.elements["postnr"].value) || alert("Postnummret skall endast innehålla siffror")) && 
	Boolean(new personnummer(obj.elements["personnr"].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["adress"].value != "" || alert("Ingen adress ifyllt!")) &&
	Boolean(obj.elements["ort"].value != "" || alert("Ingen ort ifyllt!")) && 
	
    Boolean((obj.elements["password"].value == obj.elements["password2"].value) || alert("Lösenorden överensstämmer ej!")) && 
[B]
    Boolean((obj.elements["Username"].value.length >= 5 && obj.elements["username"].value.length <= 50) || alert("Fältet Användarnamn måste innehålla minst 5 tecken.")) &&
    Boolean((obj.elements["password"].value.length >= 5 && obj.elements["password"].value.length <= 50) || alert("Fältet lösenord måste innehålla minst 5 tecken.")) &&
Boolean(
	    (/\d{2,4}(\s|-|\\)?(\d\s*){5,8}/.test(obj.elements["hemtele"].value) || 
	    /\d{3}(\s|-|\\)?(\d\s*){7}/.test(obj.elements["mobtele"].value)) || 
	    alert("Vänligen ange åtminstone ett giltigt telefonnummer"))[/B]
	);
}

</script>
Peter SMedlem sedan dec. 20025 483 inlägg
#7

På ett ställe har du skrivit "Username" och på ett annat "username".

ConnyFoxMedlem sedan aug. 20011 087 inlägg
#8

ja jo men sabbar det alla 3 kontroller verkligen? ;)

Peter SMedlem sedan dec. 20025 483 inlägg
#9

You tell me:

<script type="text/javascript">

// 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;
}

/*
* isValidEmail() är hämtad från [url]www.jojoxx.net[/url]. Låt stå!
*/
String.prototype.isValidEmail = function(){
	return !!this.match(/^([a-zA-Z0-9]{1}([a-zA-Z0-9\.\-\_]*)[a-zA-Z0-9]{1})@([a-zA-Z0-9]{1}([a-zA-Z0-9\.\-\_]*)[a-zA-Z0-9]{1})\.([a-zA-Z]{2,4})$/)
}

function validate(obj){
    return (
	Boolean(obj.elements["email"].value.isValidEmail() || alert("Ej giltlig Epost-adress"))  && 
	Boolean(/^\d+$/.test(obj.elements["postnr"].value) || alert("Postnummret skall endast innehålla siffror")) && 
	Boolean(new personnummer(obj.elements["personnr"].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["adress"].value != "" || alert("Ingen adress ifyllt!")) &&
	Boolean(obj.elements["ort"].value != "" || alert("Ingen ort ifyllt!")) && 
	
    Boolean((obj.elements["password"].value == obj.elements["password2"].value) || alert("Lösenorden överensstämmer ej!")) && 

    Boolean((obj.elements["username"].value.length >= 5 && obj.elements["username"].value.length <= 50) || alert("Fältet Användarnamn måste innehålla minst 5 tecken.")) &&
    Boolean((obj.elements["password"].value.length >= 5 && obj.elements["password"].value.length <= 50) || alert("Fältet lösenord måste innehålla minst 5 tecken.")) &&
Boolean(
	    (/\d{2,4}(\s|-|\\)?(\d\s*){5,8}/.test(obj.elements["hemtele"].value) || 
	    /\d{3}(\s|-|\\)?(\d\s*){7}/.test(obj.elements["mobtele"].value)) || 
	    alert("Vänligen ange åtminstone ett giltigt telefonnummer"))
	);
}

</script>

<form onsubmit="return validate(this)">
email <input name="email"><br>
postnr <input name="postnr"><br>
personnr <input name="personnr"><br>
fornamn <input name="fornamn"><br>
efternamn <input name="efternamn"><br>
adress <input name="adress"><br>
ort <input name="ort"><br>
password <input name="password"><br>
password2 <input name="password2"><br>
usernamn <input name="username"><br>
hemtele <input name="hemtele"><br>
mobtele <input name="mobtele"><br>
<input type="submit">
</form>
ConnyFoxMedlem sedan aug. 20011 087 inlägg
#10

Ok får tacka det där funkade skitbra MEN jag behöver även en som kontrolerar att det inte innehåller något av följande tecken
/\:*?"<>|
det är dom man inte får ha i filnamn i windows, ska ladda upp en bild o döpa nämligen.

Peter SMedlem sedan dec. 20025 483 inlägg
#11

Glöm inte att använda funktionen acceptera som slutgiltigt svar när du är nöjd med svaret.

function validate(obj){
    return (
	Boolean(obj.elements["email"].value.isValidEmail() || alert("Ej giltlig Epost-adress"))  && 
	Boolean(/^\d+$/.test(obj.elements["postnr"].value) || alert("Postnummret skall endast innehålla siffror")) && 
	Boolean(new personnummer(obj.elements["personnr"].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["adress"].value != "" || alert("Ingen adress ifyllt!")) &&
	Boolean(obj.elements["ort"].value != "" || alert("Ingen ort ifyllt!")) && 
        Boolean((obj.elements["password"].value == obj.elements["password2"].value) || alert("Lösenorden överensstämmer ej!")) && 
        Boolean((obj.elements["username"].value.length >= 5 && obj.elements["username"].value.length <= 50) || alert("Fältet Användarnamn måste innehålla minst 5 tecken.")) &&
        Boolean((obj.elements["password"].value.length >= 5 && obj.elements["password"].value.length <= 50) || alert("Fältet lösenord måste innehålla minst 5 tecken.")) &&
	[b]Boolean(/[\/\\:\*\?"<>\|]/.test(obj.elements["[i]namn_på_fält[/i]"].value) && alert("Får ej innehålla  /\:*?"<>|")) && [/b]
        Boolean(
	    (/\d{2,4}(\s|-|\\)?(\d\s*){5,8}/.test(obj.elements["hemtele"].value) || 
	    /\d{3}(\s|-|\\)?(\d\s*){7}/.test(obj.elements["mobtele"].value)) || 
	    alert("Vänligen ange åtminstone ett giltigt telefonnummer"))
	);
}
ConnyFoxMedlem sedan aug. 20011 087 inlägg
#12

jag får det faktiskt inte att funka.. kör med denna koden och den reagerar inte alls.

<script type="text/javascript">

function validate(obj){
return (
Boolean(/[\/\\:\*\?"<>\|]/.test(obj.elements["artikelnr"].value) && alert("ArtikelNR får ej innehålla  /\:*?"<>|"))
);
}
</script>
Peter SMedlem sedan dec. 20025 483 inlägg
#13

Jag glömde escape:a citationstecknet i alert():

alert("ArtikelNR får ej innehålla  /\:*?\"<>|")
ConnyFoxMedlem sedan aug. 20011 087 inlägg
#14

Funkar delvis, den reagerar nu om man skrivit ett felaktigt tecken men har man inte det så skickas inte formuläret iväg :(

ConnyFoxMedlem sedan aug. 20011 087 inlägg
#15

Ingen?

Peter SMedlem sedan dec. 20025 483 inlägg
#16
function validate(obj){
    return (
	Boolean(obj.elements["email"].value.isValidEmail() || alert("Ej giltlig Epost-adress"))  && 
	Boolean(/^\d+$/.test(obj.elements["postnr"].value) || alert("Postnummret skall endast innehålla siffror")) && 
	Boolean(new personnummer(obj.elements["personnr"].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["adress"].value != "" || alert("Ingen adress ifyllt!")) &&
	Boolean(obj.elements["ort"].value != "" || alert("Ingen ort ifyllt!")) && 
        Boolean((obj.elements["password"].value == obj.elements["password2"].value) || alert("Lösenorden överensstämmer ej!")) && 
        Boolean((obj.elements["username"].value.length >= 5 && obj.elements["username"].value.length <= 50) || alert("Fältet Användarnamn måste innehålla minst 5 tecken.")) &&
        Boolean((obj.elements["password"].value.length >= 5 && obj.elements["password"].value.length <= 50) || alert("Fältet lösenord måste innehålla minst 5 tecken.")) &&
	Boolean(!/[\/\\:\*\?"<>\|]|$.{0}^/.test(obj.elements["artikelnr"].value) || alert("Artikelnumret får ej vara tomt eller innehålla  /\:*?\"<>|")) && 
        Boolean(
	    (/\d{2,4}(\s|-|\\)?(\d\s*){5,8}/.test(obj.elements["hemtele"].value) || 
	    /\d{3}(\s|-|\\)?(\d\s*){7}/.test(obj.elements["mobtele"].value)) || 
	    alert("Vänligen ange åtminstone ett giltigt telefonnummer"))
	);
}
135 ms totalt · 3 externa anrop · v20260731065814-full.30151723
124 ms — hämta forumlista (db)
0 ms — hämta statistik (cache)
133 ms — hämta tråd, inlägg och bilagor (db)