Avatar billede jesper27 Nybegynder
28. november 2000 - 09:38 Der er 16 kommentarer og
1 løsning

Tegn validering - HASTER :)

Jeg validere et form felt og foelgende fejl:

Invalid character
Wish to debug ?

Her er koden

var lovlig = \"0123456789ABCDEFGHIJKLMOPQRSTUVXYZ\";

if (knap.RequestTCID.value.length != 0) {
for (i=0; Knap.RequestTCID.value; i++){
if (lovlig.indexOf
  (Knap.RequestTCID.VALUEcharAt(i))<0)) {
  alert(\"Only valid characters\");    
  return false;
  }
}
}
Avatar billede erikjacobsen Ekspert
28. november 2000 - 09:41 #1
for (i=0; i<Knap.RequestTCID.value.length; i++){
Avatar billede erikjacobsen Ekspert
28. november 2000 - 09:42 #2
og

(Knap.RequestTCID.VALUE.charAt(i))<0)) {
Avatar billede jesper27 Nybegynder
28. november 2000 - 14:06 #3
Jeg har stadig fejlen, det sker i selve ved load af filen.

Her har I hele function:

<script language=javascript>
function funcsubmit(){

    var knap = document.all.userinfo;
   
    if (knap.email.value.indexOf(\"@\")==-1 ||
      knap.email.value.indexOf(\".\")==-1 ||
          knap.email.value.length == 0 ||
      knap.email.value.indexOf(\"\'\") > 0 ) {
      alert (\"Please give an email address\") ;
      knap.email.focus() ;
      knap.email.select() ;
      return false ;
      }
           
    if (knap.fname.value.length == 0) {
        alert (\"Please write a first name\") ;
        knap.fname.focus() ;
        knap.fname.select() ;
        return false ;
        }
           
    if (knap.lname.value.length <= 1) {
        alert (\"Please write a last name\") ;
        knap.lname.focus() ;
        knap.lname.select() ;
        return false ;
        }

    var lovlig = \"0123456789ABCDEFGHIJKLMOPQRSTUVXYZ\";
           
    if (knap.RequestTCID.value.length != 0 && 
            knap.RequestTCID.value.length != 5){
        alert (\"TCID must consist of five characters\")
        knap.RequestTCID.focus() ;
        knap.RequestTCID.select() ;
        return false ;
    }

// koden virker fint indtil den når til if lovlig delen!!!               
    if (knap.RequestTCID.value.length != 0) {
      for (i=0; i<Knap.RequestTCID.value; i++){
         if (lovlig.indexOf(Knap.RequestTCID.charAt(i))<0)) {
            (Knap.RequestTCID.charAt(i))<0)) {
            alert(\"TCID can only contain letters and number\");    
            knap.RequestTCID.focus() ;
            knap.RequestTCID.select() ;
            return false;
            }
        }
    }
// End Problem


if (isNaN(knap.byear.value)|| parseInt(knap.byear.value) < 1900 || parseInt(knap.byear.value) > 2050) {
    alert (\"Please give your year of birth in 4 digits\") ;
    knap.byear.focus() ;
    knap.byear.select() ;
    return false ;
    }
   
  if (knap.gender.value == \"\") {
    alert (\"Please select a gender\") ;
    knap.lname.focus() ;
    return false ;
    }

<% if iAlias = \"\" then
    \'## the user is not logged in(new user)
    %>
    if (knap.uid.value.length == 0 ||
            knap.uid.value.indexOf(\"\'\") > 0 ||
        knap.uid.value.indexOf(\"\\\"\") > 0) {
        alert (\"Please write a valid login name\") ;
        knap.uid.focus() ;
        knap.uid.select() ;
        return false ;
    }
   
    if (knap.uid.value.length > 25) {
    alert (\"The maximum length of the login name is 25 characters\") ;
    knap.uid.focus() ;
    knap.uid.select() ;
    return false ;
    }
    <% else
    \'## the user is logged in (change of user profile)
    %>   
    if (knap.password1.value != knap.password2.value) {
        alert (\"The two passwords are not identical\") ;
        knap.password1.focus() ;
        knap.password1.select() ;
        return false ;
    }
   
    if (knap.password1.value.length < 3 ||knap.password1.value.length > 15) {
    alert (\"The password shall be between 3 and 15 characters\") ;
    knap.password1.focus() ;
    knap.password1.select() ;
    return false ;
    }
    <% end if %>   
    }
</script>

Giver dette mening ??
Avatar billede erikjacobsen Ekspert
28. november 2000 - 14:10 #4
  if (lovlig.indexOf(Knap.RequestTCID.charAt(i))<0)) {
skal måske være
  if (lovlig.indexOf(Knap.RequestTCID.charAt(i))<0) {

og så tror jeg du skal stave knap ens: enten knap eller Knap
Avatar billede jesper27 Nybegynder
28. november 2000 - 14:30 #5
Ændrede den dårlige kode til nedstående men jeg får stadig samme fejl!



if (knap.RequestTCID.value.length != 0) {
    for (i=0; i<knap.RequestTCID.value; i++){
    if (lovlig.indexOf(knap.RequestTCID.charAt(i))<0) {
        (knap.RequestTCID.charAt(i))<0)) {
        alert(\"TCID can only contain letters and number\");    
        knap.RequestTCID.focus() ;
        knap.RequestTCID.select() ;
        return false;
    }
    }
}
Avatar billede jakoba Nybegynder
28. november 2000 - 19:42 #6
Jeg går ud fra at
    knap.RequestTCID.value
er en streng med det brugeren har skrevet i dit felt.
Du skal bruge
    knap.RequestTCID.value.length
i din for-løkke for at sikre at i ikke bevæger sig ud over enden af strengen.

    for (i=0; i<knap.RequestTCID.value.length; i++){

PS: det var vist det samme erikjakobsen sagde allerførst :)
Avatar billede jesper27 Nybegynder
28. november 2000 - 20:43 #7
Det er korrekt at \"knap.ReguestTCID.value\" er input fra brugeren i form af følgende client side kode:

<tr><td>Request TCID &nbsp;<small>(only letters and numbers)<small></td><td><input type=\"Text\" name=\"RequestTCID\" value=\"<%=ReqTCID%>\" size=\"6\" maxlength=\"5\"></td></tr>

\"for\" løkken har du også ret i.
Jeg tror det har noget af gøre med \"charat(i)\", men hvad aner jeg ikke.
Avatar billede jakoba Nybegynder
28. november 2000 - 21:02 #8
Og du får stadig samme fejl når du modificerer betingelsen i forløkken så der testes imod
  i<knap.RequestTCID.value.length
istedet for blot
  i<knap.RequestTCID.value
som du har det i alle dine eksempler ?
Avatar billede jesper27 Nybegynder
28. november 2000 - 21:40 #9
Jeg er taget hjem nu men kigger på det i morgen tidlig.
Avatar billede nlunn Nybegynder
03. december 2000 - 01:20 #10
hvad med følgende:

var strValue = knap.RequestTCID.value
if ( strValue.length != 0 &&
    strValue.indexOf( /[^A-Z0-9]/ ) != -1 )
{
    alert(\"TCID can only contain letters and number\");
    knap.RequestTCID.focus() ;
    knap.RequestTCID.select() ;
    return false;
}

Det er en del lettere ;O)

Hvorfor kalde focus - da select automatisk kalder focus?
Avatar billede jesper27 Nybegynder
04. december 2000 - 00:00 #11
Det prøver jeg imorgen tidlig :)
Avatar billede jesper27 Nybegynder
04. december 2000 - 13:57 #12
Jeg får at vide at der en fejl i linien:

if ( strValue.length != 0 && strValue.indexOf( /[^A-Z0-9]/ ) != -1 ) {

\"Error: Invalid Character

Jeg har ingen idé hvorfor!!!!
Avatar billede nlunn Nybegynder
04. december 2000 - 19:08 #13
Det lyder underligt - Jeg har testet det under både NS og IE - Jeg tror ikke det er den linie der er noget galt med - Er det en javascript fejl eller asp?

Kører du stadig igennem en løkke? Det skal du ikke hvis du bruger min metode.
Evt prøv at skrive scriptet igen, så skal jeg se hvad jeg kan gøre
Avatar billede jesper27 Nybegynder
04. december 2000 - 22:44 #14
Det er en javascript fejl!

Jeg har forsøgt at skifte min kode ud de viste ovenfor. Normalt ville jeg vælge samme løsning som du har vist, men jeg kan simpelt hen ikke få \"skidtet\" til at virke.

Kan det have noget med at gøre at jeg validerer det samme to gange?
Avatar billede nlunn Nybegynder
04. december 2000 - 23:13 #15
Jeg tror at du har en fejl i en løkke. Men kan ikke sige det, da jeg ikke kan se koden.

Desuden var der en åbenlys fejl i din tidligere kode:

if (knap.RequestTCID.value.length != 0) {
    for (i=0; i<knap.RequestTCID.value; i++){
    if (lovlig.indexOf(knap.RequestTCID.charAt(i))<0) {
        (knap.RequestTCID.charAt(i))<0)) {
        alert(\"TCID can only contain letters and number\");   
        knap.RequestTCID.focus() ;
        knap.RequestTCID.select() ;
        return false;
    }
    }
}


Du gentager den samme linie: \"(knap.RequestTCID.charAt(i))<0)) { \"
Du trækker heller ikke værdien ud af formen: \" knap.RequestTCID.charAt(i) \"
Den rettede skulle være:

if (knap.RequestTCID.value.length != 0) {
    for (i=0; i<knap.RequestTCID.value.length; i++){
    if (lovlig.indexOf(knap.RequestTCID.value.charAt(i))<0) {
        alert(\"TCID can only contain letters and number\");   
        knap.RequestTCID.focus() ;
        knap.RequestTCID.select() ;
        return false;
    }
  }
}


Du ville desuden gøre dig selv en meget stor tjeneste, hvis du lavede lokale variabler, da det er lettere at læse:

var strValue = knap.RequestTCID.value;
if ( strValue.length != 0 )
{
  for ( var i = 0; i < strValue.length; i++ )
  {
    if ( lovlig.indexOf( strValue.charAt( i ) ) < 0 )
    {
      alert(\"TCID can only contain letters and number\");
      knap.RequestTCID.focus() ;
      knap.RequestTCID.select() ;
      return false;
    }
  }
}

Følgende tjek er desuden overflødigt:
if ( strValue.length != 0 )
du vil alligevel ikke køre gennem en løkke der har længden 0

Så dit script kan koges ned til:

var strValue = knap.RequestTCID.value;
for ( var i = 0; i < strValue.length; i++ )
{
  if ( lovlig.indexOf( strValue.charAt( i ) ) < 0 )
  {
    alert(\"TCID can only contain letters and number\");
    knap.RequestTCID.focus() ;
    knap.RequestTCID.select() ;
    return false;
  }
}

eller på min måde:

var strValue = knap.RequestTCID.value
if ( strValue.indexOf( /[^A-Z0-9]/ ) != -1 )
{
  alert(\"TCID can only contain letters and number\");
  knap.RequestTCID.focus() ;
  knap.RequestTCID.select() ;
  return false;
}


Håber det hjælper.
Avatar billede jesper27 Nybegynder
05. december 2000 - 22:24 #16
Jeg prøver din løsning i morgen.
Avatar billede jesper27 Nybegynder
29. december 2000 - 12:29 #17
Jeg kan ikke få skidtet til at virke jeg får stadig \"Invalid Character\".
Så jeg lukker denne.

Jeg ved I ikke kan bruge det til noget, men mange tak for indsatsen.
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
Vi tilbyder markedets bedste kurser inden for webudvikling

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