Προς το περιεχόμενο

Πρόβλημα με Javascript - Form Validation


Dark_Sage

Προτεινόμενες αναρτήσεις

Δημοσ.

Γεια σε όλους,

 

αντιμετωπίζω ένα πρόβλημα όταν χρησιμοποιώ 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> 

Δημοσ.

Όλα τα 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>

Δημοσ.

Δοκίμασε να αλλάξεις το:

>if (first > second)

σε:

>if (intval(first) > intval(second))

JavaScript intval

Get the integer value of a variable

 

Όλα τα input χρειάζονται και id[...]

Στην συγκεκριμένη περίπτωση δεν νομίζω πως χρειάζονται εφόσον δεν χρησιμοποιεί κάποια getElementByID λειτουργία.

Δημοσ.

Μάλλον το πρόβλημα είναι πως οι μεταβλητές σου αποθηκεύουν το περιεχόμενο των textbox σαν string και όχι σαν αριθμό. Χρησιμοποίησε την parseFloat για να κάνεις τη μετατροπή.

 

>
var first = parseFloat(document.forms["inputData"]["1"].value);
var second = parseFloat(document.forms["inputData"]["2"].value);

Δημοσ.

Μάλλον το πρόβλημα είναι πως οι μεταβλητές σου αποθηκεύουν το περιεχόμενο των textbox σαν string και όχι σαν αριθμό. Χρησιμοποίησε την parseFloat για να κάνεις τη μετατροπή.

 

>
var first = parseFloat(document.forms["inputData"]["1"].value);
var second = parseFloat(document.forms["inputData"]["2"].value);

έπαιξε έτσι.

ευχαριστώ πολύ όλους

Αρχειοθετημένο

Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.

  • Δημιουργία νέου...