Form validation javascript

Form validation javascript
2006-03-30T16:28:04+02:00
2006-03-30T17:56:13+02:00
2022-10-30T02:42:08+01:00
odba
Sziasztok!

... function emailvalidation(entered, alertbox) { with (entered) { apos=value.indexOf("@"); dotpos=value.lastIndexOf("."); lastpos=value.length-1; if (apos<1 || dotpos-apos<2 || lastpos-dotpos>3 || lastpos-dotpos<2) { if (alertbox) { alert(alertbox); } return false; } else { return true; } } } function formvalidation(thisform) { with (thisform) { for(i=0;i<recipient_email.value.length;i++) { if (emailvalidation(recipient_email[i],"Illegal E-mail") == false) { recipient_email[i].focus(); return false; } } } } </script> <form name="ecard_send" method="post" action="" onsubmit="return formvalidation(this)"> ... //néhány e-mail beviteli mezo: <input type="text" name="recipient_email[0]" id="recipient_email[0]" class="textfield" style="width: 200px;"> <input type="text" name="recipient_email[1]" id="recipient_email[1]" class="textfield" style="width: 200px;"> //stb

Kérdésem a következő:
Miért postolja el mindig? se hibaüzi se semmi.
Mutasd a teljes hozzászólást!
Tiedhez közelebbi megoldás:

<body> <script> function formvalidation(thisform) { for(i=0;i<thisform.length;i++) { if (thisform[i].name.substr(0,15)=="recipient_email") alert("Itt ellenőrizd az " + thisform[i].name +" "+thisform[i].value+" értékét") } } </script> <form name="ecard_send" method="post" action="" onsubmit="return formvalidation(this)"> ... //néhány e-mail beviteli mezo: <input type="text" name="recipient_email[0]" id="recipient_email[0]" class="textfield" style="width: 200px;"> <input type="text" name="recipient_email[1]" id="recipient_email[1]" class="textfield" style="width: 200px;"> <input type="submit"> //stb </body>
Mutasd a teljes hozzászólást!

  • function formvalidation(thisform) { with (thisform) { alert(recipient_email.value.length); for(i=0;i<recipient_email.value.length;i++) { if (emailvalidation(recipient_email[i],"Illegal E-mail") == false) { recipient_email[i].focus(); return false; } } } }

    ez mit mond? tuti, hogy lefut az a ciklus? a végére tennék egy olyat, hogy akkor is legyen visszatérési értéke, ha nem futott le...
    Mutasd a teljes hozzászólást!
  • semmit :((
    Mutasd a teljes hozzászólást!
  • és így:

    alert(thisform); alert(thisform.recipient_email); alert(thisform.recipient_email.length); alert(thisform.recipient_email.value); alert(thisform.recipient_email.value.length);

    ??? (a with-et nem nagyon szeretem használni JS-ben egyébként...)
    Mutasd a teljes hozzászólást!
  • Biztos vagy benne, hogy ez tömb?
    <input type="text" name="recipient_email[0]" ....>


    function formvalidation(thisform) {
    // Ezt tedd bele:
    alert(thisform.recipient_email[0].value)
    hogy "lásd"

    Mutasd a teljes hozzászólást!
  • function formvalidation(thisform) { with (thisform) { alert(thisform); alert(thisform.recipient_email); alert(thisform.recipient_email.length); alert(thisform.recipient_email.value); alert(thisform.recipient_email.value.length); return false; for(i=0;i<recipient_email.value.length;i++) { if (emailvalidation(recipient_email[i],"Illegal E-mail") == false) { recipient_email[i].focus(); return false; } } } }

    ezzel két üzit ír:
    első: [object htmlformelement]
    második: undefined
    aztán elpostolja... ez már csak azért is érdekes, mert ott van rögtön utánna a return true

    Ha nem szereted használni, mit ajánlasz?
    hogyan ellenőriznéd végig az összes e-mail címet?
    Mutasd a teljes hozzászólást!
  • function formvalidation(thisform) { with (thisform) { alert('asdf'+thisform.recipient_email[0].value); return false; ...

    nem történik semmi. csak postol és postol...
    Mutasd a teljes hozzászólást!
  • Ha a feldolgozó javascript-be hiba küvetkezik be, akkor automatikusan a "return true" lép életbe.

    Neked a 3. alert dobja most a hibát (feltehetően nincs length (mert nem tömb)).
    Így hiba lesz, return true, és már el is megy.
    Mutasd a teljes hozzászólást!
  • Próbáld ki ezt IE-ben, vagy ff-ben (tehát ott, ami a javascript hibákat visszajelzi:
    <body> <script> function formvalidation(thisform) { alert(thisform.recipient_email[0].value) } </script> <form name="ecard_send" method="post" action="" onsubmit="return false"> ... //néhány e-mail beviteli mezo: <input type="text" name="recipient_email[0]" id="recipient_email[0]" class="textfield" style="width: 200px;"> <input type="text" name="recipient_email[1]" id="recipient_email[1]" class="textfield" style="width: 200px;"> <input type="submit" onclick="return formvalidation(this.form)"> </form> </body>

    Letiltottam az elküldést, de a rutinodat meghívtam.
    Javascript hibát okoz.


    1 megoldás:
    <script> function formvalidation(thisform) { alert(document.getElementById('recipient_email0').value) } </script> <form name="ecard_send" method="post" action="" onsubmit="return false"> ... //néhány e-mail beviteli mezo: <input type="text" name="recipient_email[]" id="recipient_email0" class="textfield" style="width: 200px;"> <input type="text" name="recipient_email[]" id="recipient_email1" class="textfield" style="width: 200px;"> <input type="submit" onclick="return formvalidation(this.form)"> </form>
    Mutasd a teljes hozzászólást!
  • Error: thisform.recipient_email has no properties
    Source File: http://
    Line: 184

    akkor, hogyan tudom őket leellenőrizni?
    Mutasd a teljes hozzászólást!
  • Tiedhez közelebbi megoldás:

    <body> <script> function formvalidation(thisform) { for(i=0;i<thisform.length;i++) { if (thisform[i].name.substr(0,15)=="recipient_email") alert("Itt ellenőrizd az " + thisform[i].name +" "+thisform[i].value+" értékét") } } </script> <form name="ecard_send" method="post" action="" onsubmit="return formvalidation(this)"> ... //néhány e-mail beviteli mezo: <input type="text" name="recipient_email[0]" id="recipient_email[0]" class="textfield" style="width: 200px;"> <input type="text" name="recipient_email[1]" id="recipient_email[1]" class="textfield" style="width: 200px;"> <input type="submit"> //stb </body>
    Mutasd a teljes hozzászólást!
  • próbálom próbálom, de már azt se tudom fiú vagyok-e vagy lány.

    pl.:
    a Te módzsered ok, bár nem értem, miért nem tömb az a szerencsétlen, és miért kell a nevét sniffelni, hogy az-e amit vizsgálni akarok
    Ez msot nem is lényeges, ami érdekes:

    inp = getElementById(thisform[i].name);

    üzenet:
    Error: getElementById is not defined

    Mutasd a teljes hozzászólást!
  • inp=document.getElementById(thisform.name);

    Azért nem tömb, mert szöveg

    Amit idézőjelbe írsz, azt szövegként kezeli a rendszer.
    Mutasd a teljes hozzászólást!
  • köszöntem nagyon mély tisztelettel!
    Mutasd a teljes hozzászólást!
  • ja, hogy én hogy csinálnám?

    igaz, nagyon szép mind kliens, mint szerver oldalon az input elemek tömbösítése, személy szerint ennek ellensége vagyok, mert elbonyolítja a dolgokat, és nem minden egyértelmű benne.

    Feltéve, hogy az első függvényed jó (egyébként azt egy elegáns regexp-pel helyettesíteném, de mind1)

    <script language="JavaScript" type="text/javascript"> <!-- var email_re = new RegExp("/[a-zA-Z0-9\.\+\-\_]+\@[a-zA-Z0-9\.\+\-\_]+/"); function formvalidation(tf) { var ret = true; for (i=0;var email = document.getElementById(tf.id+'_email_'+i);i++) { ret = ret && (email.value.match(email_re)); } return ret; } //--> </script> <form id="ezaz" name="ecard_send" method="post" action="" onsubmit="return formvalidation(this)"> ... //néhány e-mail beviteli mezo: <input type="text" id="ezaz_email_0" class="textfield" style="width: 200px;"> <input type="text" id="ezaz_email_1" class="textfield" style="width: 200px;"> <input type="text" id="ezaz_email_2" class="textfield" style="width: 200px;"> //stb

    Nem próbáltam ki, lehet, h pár helyen javításra szorul, a lényeg a document.getElementById függvényen van
    Mutasd a teljes hozzászólást!
  • Szívesen
    Mutasd a teljes hozzászólást!
Tetszett amit olvastál? Szeretnél a jövőben is értesülni a hasonló érdekességekről?
abcd