C ConnyFox Medlem sedan aug. 2001 1 087 inlägg Frågan 31 mars 2005 00:12 #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 ;)
P Peter S Medlem sedan dec. 2002 5 483 inlägg /*
* 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.
C ConnyFox Medlem sedan aug. 2001 1 087 inlägg Funkade tyvärr inte helt bra..
ska det vara nödvändigt med alla Boolean?
C ConnyFox Medlem sedan aug. 2001 1 087 inlägg 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>
P Peter S Medlem sedan dec. 2002 5 483 inlägg På ett ställe har du skrivit "Username" och på ett annat "username".
C ConnyFox Medlem sedan aug. 2001 1 087 inlägg ja jo men sabbar det alla 3 kontroller verkligen? ;)
P Peter S Medlem sedan dec. 2002 5 483 inlägg 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>
C ConnyFox Medlem sedan aug. 2001 1 087 inlägg 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.
P Peter S Medlem sedan dec. 2002 5 483 inlägg 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"))
);
}
C ConnyFox Medlem sedan aug. 2001 1 087 inlägg 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>
P Peter S Medlem sedan dec. 2002 5 483 inlägg Jag glömde escape:a citationstecknet i alert():
alert("ArtikelNR får ej innehålla /\:*?\"<>|")
C ConnyFox Medlem sedan aug. 2001 1 087 inlägg Funkar delvis, den reagerar nu om man skrivit ett felaktigt tecken men har man inte det så skickas inte formuläret iväg :(
P Peter S Medlem sedan dec. 2002 5 483 inlägg 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"))
);
}