webForumDet fria alternativet

Validera två lösenord?

10 svar · 597 visningar · startad av streetrobban

streetrobbanMedlem sedan jan. 20011 140 inlägg
#1

Hej!

Jag har söker en funktion som kontrollerar om två inmatade lösenord är likadana eller inte. Jag har hittat ett script här på webForum som jag tror funkar. Men jag lyckas inte få in det i nedanstående kod:

<script type="text/javascript">
/* Detta script finns att hämta på http://www.jojoxx.net och
får användas fritt så länge som dessa rader står kvar. */

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 validateForm() {
if (document.bli_medlem.Firstname.value=="") {
alert("Du måste fylla i ditt förnamn.");
return false;
} else if (document.bli_medlem.Lastname.value=="") {
alert("Du måste fylla i ditt efternamn.");
return false;
} else if (document.bli_medlem.Streetadress.value=="") {
alert("Du måste fylla i din gatuadress.");
return false;
} else if (document.bli_medlem.State.value=="") {
alert("Du måste fylla i din ort.");
return false;
} else if (document.bli_medlem.Zipcode.value=="") {
alert("Du måste fylla i ditt postnummer.");
return false;
} else if (!document.bli_medlem.Email.value.isValidEmail()) {
alert("Du måste fylla i korrekt en email adress.");
return false;
} else if (document.bli_medlem.YearOfBirth.value=="") {
alert("Du måste ange ditt personnummer.");
return false;
} else if (document.bli_medlem.MonthOfBirth.value=="") {
alert("Du måste ange ditt personnummer.");
return false;
} else if (document.bli_medlem.DayOfBirth.value=="") {
alert("Du måste ange ditt personnummer.");
return false;
} else if (document.bli_medlem.Password.value=="") {
alert("Du måste fylla i ett lösenord.");
return false;
} else if (document.bli_medlem.PasswordRepeat.value=="") {
alert("Du måste fylla i ett lösenord.");
return false;
} else if (document.bli_medlem.Username.value=="") {
alert("Du måste fylla i ett användarnamn.");
return false;
} else if (document.bli_medlem.StateVisible.value=="") {
alert("Du måste fylla i din ort.");
return false;
}
</script>

Koden som inte fungerar riktigt, den kontrollerar alla fält om de är OK. Men man kan skriva in två lösenord utan att den säger till:

<script type="text/javascript">
/* Detta script finns att hämta på http://www.jojoxx.net och
får användas fritt så länge som dessa rader står kvar. */

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})$/)
}

var Password = document.bli_medlem.Password.value;
var PasswordRepeat = document.bli_medlem.PasswordRepeat.value;

function validateForm() {
if (document.bli_medlem.Firstname.value=="") {
alert("Du måste fylla i ditt förnamn.");
return false;
} else if (document.bli_medlem.Lastname.value=="") {
alert("Du måste fylla i ditt efternamn.");
return false;
} else if (document.bli_medlem.Streetadress.value=="") {
alert("Du måste fylla i din gatuadress.");
return false;
} else if (document.bli_medlem.State.value=="") {
alert("Du måste fylla i din ort.");
return false;
} else if (document.bli_medlem.Zipcode.value=="") {
alert("Du måste fylla i ditt postnummer.");
return false;
} else if (!document.bli_medlem.Email.value.isValidEmail()) {
alert("Du måste fylla i korrekt en email adress.");
return false;
} else if (document.bli_medlem.YearOfBirth.value=="") {
alert("Du måste ange ditt personnummer.");
return false;
} else if (document.bli_medlem.MonthOfBirth.value=="") {
alert("Du måste ange ditt personnummer.");
return false;
} else if (document.bli_medlem.DayOfBirth.value=="") {
alert("Du måste ange ditt personnummer.");
return false;
} else if (document.bli_medlem.Password.value=="") {
alert("Du måste fylla i ett lösenord.");
return false;
} else if (document.bli_medlem.PasswordRepeat.value=="") {
alert("Du måste fylla i ett lösenord.");
return false;
} else if (document.bli_medlem.Username.value=="") {
alert("Du måste fylla i ett användarnamn.");
return false;
} else if (document.bli_medlem.StateVisible.value=="") {
alert("Du måste fylla i din ort.");
return false;
} else if (Password != PasswordRepeat) {
alert("Lösenorden måste vara likadana.");
return false;
}
</script>
nitro2k01Medlem sedan aug. 20039 342 inlägg
#2

Pröva att flytta var-satserna in i funktionen. Alltså placera de två raderna mellan function och första if.

metalboyMedlem sedan jan. 2005953 inlägg
#3

Offtopic: Vad är syftet med dubbelnegationen i din emailvalidering?

streetrobbanMedlem sedan jan. 20011 140 inlägg
#4

nitro2k01: Det funkade inte...

metalboy: Jag vet inte, har hittat koden på forumet :) Den funkar, så jag rör inget.

Någon som har några andra förslag?

Peter SMedlem sedan dec. 20025 483 inlägg
#5
<script type="text/javascript">
/* Detta script finns att hämta på [url]http://www.jojoxx.net[/url] och
får användas fritt så länge som dessa rader står kvar. */

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})$/)
}

var Password = document.bli_medlem.Password.value;
var PasswordRepeat = document.bli_medlem.PasswordRepeat.value;

function validateForm() {
if (document.bli_medlem.Firstname.value=="") {
alert("Du måste fylla i ditt förnamn.");
return false;
} else if (document.bli_medlem.Lastname.value=="") {
alert("Du måste fylla i ditt efternamn.");
return false;
} else if (document.bli_medlem.Streetadress.value=="") {
alert("Du måste fylla i din gatuadress.");
return false;
} else if (document.bli_medlem.State.value=="") {
alert("Du måste fylla i din ort.");
return false;
} else if (document.bli_medlem.Zipcode.value=="") {
alert("Du måste fylla i ditt postnummer.");
return false;
} else if (!document.bli_medlem.Email.value.isValidEmail()) {
alert("Du måste fylla i korrekt en email adress.");
return false;
} else if (document.bli_medlem.YearOfBirth.value=="") {
alert("Du måste ange ditt personnummer.");
return false;
} else if (document.bli_medlem.MonthOfBirth.value=="") {
alert("Du måste ange ditt personnummer.");
return false;
} else if (document.bli_medlem.DayOfBirth.value=="") {
alert("Du måste ange ditt personnummer.");
return false;
} else if (document.bli_medlem.Password.value=="") {
alert("Du måste fylla i ett lösenord.");
return false;
} else if (Password != PasswordRepeat) {
alert("Lösenorden överensstämmer inte.");
return false;
} else if (document.bli_medlem.Username.value=="") {
alert("Du måste fylla i ett användarnamn.");
return false;
} else if (document.bli_medlem.StateVisible.value=="") {
alert("Du måste fylla i din ort.");
return false;
} else if (Password != PasswordRepeat) {
alert("Lösenorden måste vara likadana.");
return false;
}
</script>
streetrobbanMedlem sedan jan. 20011 140 inlägg
#6

Peter S: Nu kunde man bara klicka registrera utan att fylla i något fält alls...

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

Jag måste ha ätit någon mystisk svamp när jag skrev ovanstående... :)

Som nitro skriver:

<script type="text/javascript">
/* Detta script finns att hämta på [url]http://www.jojoxx.net[/url] och
får användas fritt så länge som dessa rader står kvar. */

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 validateForm() {
var Password = document.bli_medlem.Password.value;
var PasswordRepeat = document.bli_medlem.PasswordRepeat.value;
if (document.bli_medlem.Firstname.value=="") {
alert("Du måste fylla i ditt förnamn.");
return false;
} else if (document.bli_medlem.Lastname.value=="") {
alert("Du måste fylla i ditt efternamn.");
return false;
} else if (document.bli_medlem.Streetadress.value=="") {
alert("Du måste fylla i din gatuadress.");
return false;
} else if (document.bli_medlem.State.value=="") {
alert("Du måste fylla i din ort.");
return false;
} else if (document.bli_medlem.Zipcode.value=="") {
alert("Du måste fylla i ditt postnummer.");
return false;
} else if (!document.bli_medlem.Email.value.isValidEmail()) {
alert("Du måste fylla i korrekt en email adress.");
return false;
} else if (document.bli_medlem.YearOfBirth.value=="") {
alert("Du måste ange ditt personnummer.");
return false;
} else if (document.bli_medlem.MonthOfBirth.value=="") {
alert("Du måste ange ditt personnummer.");
return false;
} else if (document.bli_medlem.DayOfBirth.value=="") {
alert("Du måste ange ditt personnummer.");
return false;
} else if (document.bli_medlem.Password.value=="") {
alert("Du måste fylla i ett lösenord.");
return false;
} else if (document.bli_medlem.PasswordRepeat.value=="") {
alert("Du måste fylla i ett lösenord.");
return false;
} else if (document.bli_medlem.Username.value=="") {
alert("Du måste fylla i ett användarnamn.");
return false;
} else if (document.bli_medlem.StateVisible.value=="") {
alert("Du måste fylla i din ort.");
return false;
} else if (Password != PasswordRepeat) {
alert("Lösenorden måste vara likadana.");
return false;
}
</script>
spangoMedlem sedan juni 20008 205 inlägg
#8

metalboy skrev:

Offtopic: Vad är syftet med dubbelnegationen i din emailvalidering?

String.test(regexp) returnerar inte en boolean, utan det som matchar regexpen den får som argument eller null om inget matchar. Eftersom det är klart vettigare att returnera true eller false från metoden isValidEmail än exempelvis en array med strängar, så används dubbelnegation för att göra om ett godtyckligt värde till motsvarande booleska värde. Efter som null betraktas som false, blir !null true, och !!null blir samma som !true, alltså false. Och tvärtom, eftersom icke-null evalueras till true så blir en negation av det false, och en dubbelnegation true. Comprenez-vous?

streetrobbanMedlem sedan jan. 20011 140 inlägg
#9

Peter S: Ok, hehe. Jag ska testa scriptet när jag kommer hem!

spango: Kunde inte sagt det bättre själv :)

metalboyMedlem sedan jan. 2005953 inlägg
#10

spango skrev:

String.test(regexp) returnerar inte en boolean, utan det som matchar regexpen den får som argument eller null om inget matchar. Eftersom det är klart vettigare att returnera true eller false från metoden isValidEmail än exempelvis en array med strängar, så används dubbelnegation för att göra om ett godtyckligt värde till motsvarande booleska värde. Efter som null betraktas som false, blir !null true, och !!null blir samma som !true, alltså false. Och tvärtom, eftersom icke-null evalueras till true så blir en negation av det false, och en dubbelnegation true. Comprenez-vous?

Absolut! Tack för förklaringen :)

nitro2k01Medlem sedan aug. 20039 342 inlägg
#11

spango skrev:

String.test(regexp) returnerar inte en boolean, utan det som matchar regexpen den får som argument eller null om inget matchar. Eftersom det är klart vettigare att returnera true eller false från metoden isValidEmail än exempelvis en array med strängar, så används dubbelnegation för att göra om ett godtyckligt värde till motsvarande booleska värde. Efter som null betraktas som false, blir !null true, och !!null blir samma som !true, alltså false. Och tvärtom, eftersom icke-null evalueras till true så blir en negation av det false, och en dubbelnegation true. Comprenez-vous?

Jag skulle dock personligen gjort "rätt" och använt test.

String.prototype.isValidEmail = function() {
return /^([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})$/.test(this);
}

Sen skulle man kunna rationalisera mer i uttrycket, till exempel använda [\w.-] istället för [a-zA-Z0-9.-_] Sånt är dock mindre viktigt.

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