webForumDet fria alternativet

Validera två lösenord?

JavaScript

10 svar · 599 visningar · startad av streetrobban

Medlem sedan jan. 20011 140 inlägg
Frågan#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>
Medlem sedan aug. 20039 340 inlägg
#2

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

Medlem sedan jan. 2005953 inlägg
#3

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

Medlem 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?

Medlem 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>
Medlem sedan jan. 20011 140 inlägg
#6

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

Medlem 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>
Medlem 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?

Medlem 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 :)

Medlem 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 :)

Medlem sedan aug. 20039 340 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.

268 ms totalt · 4 externa anrop · v20260731065814-full.1dc6f849
123 ms — deklarationer (db)
0 ms — hämta statistik (cache)
138 ms — hämta tråd, inlägg och bilagor (db)
128 ms — ändringar (db)