Dark_Sage Δημοσ. 13 Ιουλίου 2011 Δημοσ. 13 Ιουλίου 2011 Γεια σε όλους, αντιμετωπίζω ένα πρόβλημα όταν χρησιμοποιώ javascript για form validation. Θέλω πάντα το second να είναι μεγαλύτερο του first. Άρα όταν κάποιος βάζει στο first αριθμό μεγαλύτερο του second να έχω ένα μήνυμα λάθους. Ετσι δημιούργησα το παρακάτω πολύ απλό κώδικα. Όμως για είσοδο: 5, 6, 25 παίρνω το μήνυμα λάθους που κανονικά δεν θα έπρεπε. Μάλλον κάνω κάτι πολύ χαζό που δεν το βλέπω. Βλέπει κανείς πού είναι το πρόβλημα? thanx! ><html> <head> <script type="text/javascript"> function checkInput() { var initial = document.forms["inputData"]["0"].value; var first = document.forms["inputData"]["1"].value; var second = document.forms["inputData"]["2"].value; if (first > second) { alert("error"); return false; } } </script> </head> <body> <form name="inputData" method="post" onsubmit="return checkInput()"> Initial : <input type="text" size="5" name="0"/><br /> First: <input type="text" size="5" name="1"/><br /> Second: <input type="text" size="5" name="2"/><br /> <br /> <input type="submit" name="submit1" value="Submit!" /> </form> </body> </html>
dewn735 Δημοσ. 13 Ιουλίου 2011 Δημοσ. 13 Ιουλίου 2011 Όλα τα input χρειάζονται και id: ><form name="inputData" method="post" onsubmit="return checkInput()"> Initial : <input type="text" size="5" id="0" name="0"/><br /> First: <input type="text" size="5" id="1" name="1"/><br /> Second: <input type="text" size="5" id="2" name="2"/><br /> <br /> <input type="submit" name="submit1" value="Submit!" /> </form>
macabre_sunsets Δημοσ. 13 Ιουλίου 2011 Δημοσ. 13 Ιουλίου 2011 Δοκίμασε να αλλάξεις το: >if (first > second) σε: >if (intval(first) > intval(second)) JavaScript intvalGet the integer value of a variable Όλα τα input χρειάζονται και id[...] Στην συγκεκριμένη περίπτωση δεν νομίζω πως χρειάζονται εφόσον δεν χρησιμοποιεί κάποια getElementByID λειτουργία.
_tasos Δημοσ. 13 Ιουλίου 2011 Δημοσ. 13 Ιουλίου 2011 Μάλλον το πρόβλημα είναι πως οι μεταβλητές σου αποθηκεύουν το περιεχόμενο των textbox σαν string και όχι σαν αριθμό. Χρησιμοποίησε την parseFloat για να κάνεις τη μετατροπή. > var first = parseFloat(document.forms["inputData"]["1"].value); var second = parseFloat(document.forms["inputData"]["2"].value);
Dark_Sage Δημοσ. 13 Ιουλίου 2011 Μέλος Δημοσ. 13 Ιουλίου 2011 Μάλλον το πρόβλημα είναι πως οι μεταβλητές σου αποθηκεύουν το περιεχόμενο των textbox σαν string και όχι σαν αριθμό. Χρησιμοποίησε την parseFloat για να κάνεις τη μετατροπή. > var first = parseFloat(document.forms["inputData"]["1"].value); var second = parseFloat(document.forms["inputData"]["2"].value); έπαιξε έτσι. ευχαριστώ πολύ όλους
Προτεινόμενες αναρτήσεις
Αρχειοθετημένο
Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.