Avatar billede heyn Nybegynder
09. marts 2007 - 12:16 Der er 6 kommentarer og
1 løsning

Hjælp - Jeg kan ikke finde fejlen.

Jeg er ikke helt sikker på om problemet er JavaScript el. Reg.Exp. Jeg satser på det sidste.
Jeg har slidt mine øjne firkantet og grædt inat, men jeg kan ikke løse følgende problem.

Funktionen skal validere en formular for om brugernavn, email og password har rette format.

Den ser således ud

<script type="text/javascript">
<!--
function check(frm) {
  var f = new Array; // Field array
  var m = new Array; // Message array
  var error = "";
  var skip_password_check = false;
       
// Field array
  f[0] = frm['fString[user_name]'].value;
  f[1] = frm['fString[user_email]'].value;
  f[2] = frm['fString[user_group]'].options[frm['fString[user_group]'].selectedIndex].value;
  f[10] = frm['fTemp[user_password]'].value;
  f[11] = frm['fTemp[user_password2]'].value;
       
// Field title array
  m[0] = "Users name";
  m[1] = "Users email";
  m[2] = "Usergroup";
  m[10] = "Insert password";
  m[11] = "Repeat password";

// Checking all fields
  for (var i = 0; i < 3; i++) {
    if ((f[i].length == 0) || (f[i] == 0)) {
      error += '  - ' + m[i] + '\n';
    }
  }
       
// If error, returning an error message
  if (error) {
    alert('You miss to insert following data:\n\n' + error);
    return false;
  }

// Checking syntax of user name
  var reg_userid = /^([a-zA-Z0-9_\-]{4,10})$/;
  if (!reg_userid.test(f[0])) {
    alert('"' + m[0] + '" do\'nt insert one or more of following criterias:\n\n'+
    ' - between 4 and 10 caracters long\n\n'+
    ' - Must only containing following characters: A-z, the numbers 0 - 9, \'-\' and \'_\'');
    return false;
  }

// Checking syntax of user email
  var reg_em = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9])+$/;
  if (!reg_em.test(f[1])) {
    alert('The "E-mail" is not valid.');
    return false;
  }

  if ((frm.str_id.value.length > 0) && (f[10].length == 0) && (f[11].length == 0))
  skip_password_check = true;

// Checking syntax of password
  var reg_pw = /^([A-z0-9]{4,10})$/;
  if (!reg_pw.test(f[10]) && !skip_password_check) {
    alert('"' + m[10] + '" do\'nt follow one or more of following criterias:\n\n'+
    ' - between 4 and 10 caracters long\n\n'+
    ' - Must only contain following characters: A-z and the numbers 0 - 9.');
    return false;
  }

// Checking password against password 2
  if ((f[10] != f[11]) && !skip_password_check) {
    alert('"' + m[10] + '" and "' + m[11] + '" is not alike!');
    return false;
  }
}
//-->
</script>


Funktionen kaldes således:

<form method="post" onsubmit="return check(this);">

Inputstatement er på følgende form

<td class="default"><input type="password" name="fTemp[user_password]" size="12" maxlength="10" class="field" /></td>

PLEASE - Hjælp mig
På forhånd tak
Christian
Avatar billede heyn Nybegynder
09. marts 2007 - 12:21 #1
Nåe - ja.

Problemet er at man kan oprette og ændre password på brugere der ikke følger reglerne. Man kan oprette brugere uden password. Man kan indføre password hvor password1 er forskelligt fra password2. Alligevel bliver validweringen godtaget, medførende at brugeren oprettes.
Avatar billede roenving Novice
09. marts 2007 - 12:26 #2
Du mangler den afsluttende godkendelse:

    return false;
  }
  return true;
}
//-->
</script>
Avatar billede heyn Nybegynder
09. marts 2007 - 12:36 #3
Det validerer stadig ikke password. Der kommer ingen alert selv om jeg ikke indsætter noget el. indfører 2 forskellige i formularen. Det tjekkes ikke.
Avatar billede roenving Novice
09. marts 2007 - 12:57 #4
skip_password_check = true;

Den sættes vel, når du laver de tests ?-)
Avatar billede heyn Nybegynder
09. marts 2007 - 13:17 #5
Endelig - Det lykkedes at nærme sig fejlen. Du gav mig lyset.
skip_password_check skal være der da formulan også anvendes til redigere i data. I de tilfælde kan brugernavn ikke ændres.
Oprindelig var frm.str_id.value.length lig brugeren, men skal der jo stå f[0].length el. frm.fString[user_name].value.length.
Det skyldes at andre programmører tidligere har rodet i koden. Nu skal jeg til at redige 10 - 20 hjemmesider. Jeg hader crach-programmer.
Der er desuden et par andre problemer men nu er nødden knust.
Skynd dig at lægge et svar.

Mange mange tak fra Christian
Avatar billede roenving Novice
09. marts 2007 - 13:23 #6
Velbekomme '-)
Avatar billede roenving Novice
12. marts 2007 - 00:44 #7
-- og tak for point ;~}
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester