Javascript με υποχρεωτικό πεδίο integer

Κώδικας, πληροφορίες, ερωτήσεις και απαντήσεις σχετικές με την JavaScript.

Συντονιστές: WebDev Moderators, Super-Moderators

Απάντηση
Tania Vidaki
Δημοσιεύσεις: 23
Εγγραφή: 21 Μαρ 2009 19:46

Javascript με υποχρεωτικό πεδίο integer

Δημοσίευση από Tania Vidaki » 03 Ιουν 2010 14:47

Καλησπέρα, έχω φτιάξει μία φόρμα στην οποία θέλω να ελέγχεται αν η τιμή που πληκτρολογείται είναι αριθμός και μόνο τότε να μεταβαίνει στην επόμενη σελίδα.
Το script που έχω βάλει κάνει το έλεγχο αλλά μεταφέρεται η τιμή μιας και εκτελείται το action.
Έχω βάλει το κομμάτι της φόρμας παρακάτω, καθώς επίσης και το script.
Οποιαδήποτε βοήθεια επιθυμητή! Ευχαριστώ!

"<form method=\"GET\" action=\"cart.php\">
<div class=\"products\"><strong>Επιλέξτε ποσότητα: </strong>
<input type=\"hidden\" size=\"7\" name=\"prod_id\" value='".$prod_id."' />
<input type=\"text\" title=\"Πληκτρολογήστε ποσότητα\" size=\"7\" name=\"quantity\" id='numbers'/>
<input type=\"submit\" name=\"submit\" onclick=\"isNumeric(document.getElementById('numbers'), 'Numbers Only Please')\" title=\"Προσθήκη στην παραγγελία\" value=\"Προσθήκη\" />
</div>
</form>";

function isNumeric(elem, helperMsg){
var numericExpression = /^[0-9]+$/;
if(elem.value.match(numericExpression)){
return true;
}else{
alert(helperMsg);
elem.focus();
return false;
}
}

nbc
Honorary Member
Δημοσιεύσεις: 526
Εγγραφή: 05 Σεπ 2009 20:12
Επικοινωνία:

Javascript με υποχρεωτικό πεδίο integer

Δημοσίευση από nbc » 03 Ιουν 2010 15:04

Ο έλεγχος πρέπει να γίνει στον onSubmit handler της φόρμας και όχι στον onClick του submit button.

<form method="GET" action="cart.php" onSubmit="return isNumeric(...)">

Tania Vidaki
Δημοσιεύσεις: 23
Εγγραφή: 21 Μαρ 2009 19:46

Javascript με υποχρεωτικό πεδίο integer

Δημοσίευση από Tania Vidaki » 03 Ιουν 2010 19:38

το έβαλα και στη φόρμα και το αποτέλεσμα είναι το ίδιο....
το action το μεταφέρει στη σελίδα cart.php παρόλο που μπορεί να εμφανίζει το προείδοποιητικό μήνυμα...

Άβαταρ μέλους
burnmind
Script Master
Δημοσιεύσεις: 954
Εγγραφή: 26 Σεπ 2009 02:14
Τοποθεσία: UK
Επικοινωνία:

Javascript με υποχρεωτικό πεδίο integer

Δημοσίευση από burnmind » 03 Ιουν 2010 21:35

Tania Vidaki έγραψε:το έβαλα και στη φόρμα και το αποτέλεσμα είναι το ίδιο....
το action το μεταφέρει στη σελίδα cart.php παρόλο που μπορεί να εμφανίζει το προείδοποιητικό μήνυμα...
Αν προσέξεις καλύτερα αυτό που σου γράφει ο nbc θα δεις ότι έχει ένα "return" μπροστά από τη function σου (isNumeric). Πρόσθεσέ το και θα δουλέψει.

Tania Vidaki
Δημοσιεύσεις: 23
Εγγραφή: 21 Μαρ 2009 19:46

Javascript με υποχρεωτικό πεδίο integer

Δημοσίευση από Tania Vidaki » 04 Ιουν 2010 15:33

Ευχαριστώ πολύ!!
Δουλεύει μια χαρά!!! :D

Tania Vidaki
Δημοσιεύσεις: 23
Εγγραφή: 21 Μαρ 2009 19:46

Javascript με υποχρεωτικό πεδίο integer

Δημοσίευση από Tania Vidaki » 05 Ιουν 2010 21:25

Μιας και δουλεύει μια χαρά, να ρωτήσω και κάτι σχετικό με τη function isNumeric;
Η τιμή που πληκτρολογείται είτε είναι έγκυρη, είτε όχι, παραμένει πληκτρολογημένη στο πεδίο.
Τι θα μπορούσα να αλλάξω στη συνάρτηση για να παραμένει κενό σε περίπτωση που δεν είναι έγκυρη η τιμή;

Άβαταρ μέλους
korgr
Honorary Member
Δημοσιεύσεις: 5067
Εγγραφή: 07 Οκτ 2008 18:30
Τοποθεσία: Corinth
Επικοινωνία:

Javascript με υποχρεωτικό πεδίο integer

Δημοσίευση από korgr » 05 Ιουν 2010 22:16

Για δοκιμασε ετσι την function:

Κώδικας: Επιλογή όλων

function isNumeric&#40;elem, helperMsg&#41;&#123;
var numericExpression = /^&#91;0-9&#93;+$/;
if&#40;elem.value.match&#40;numericExpression&#41;&#41;&#123;
return true;
&#125;else&#123;
alert&#40;helperMsg&#41;;
elem.value="";
elem.focus&#40;&#41;;
return false;
&#125;
&#125;

Tania Vidaki
Δημοσιεύσεις: 23
Εγγραφή: 21 Μαρ 2009 19:46

Javascript με υποχρεωτικό πεδίο integer

Δημοσίευση από Tania Vidaki » 06 Ιουν 2010 00:33

Ok μια χαρά! Γιατί με null δε δούλευε!
Ευχαριστώ πολύ!! :D

Tania Vidaki
Δημοσιεύσεις: 23
Εγγραφή: 21 Μαρ 2009 19:46

Javascript με υποχρεωτικό πεδίο integer

Δημοσίευση από Tania Vidaki » 06 Ιουν 2010 14:22

Την ίδια συνάρτηση έχω βάλει και στη διαδικασία της ανανέωσης ποσότητας στο καλάθι μου αλλά ελέγχει μόνο την πρώτη σειρά ενώ είναι μέσα στο loop της επανάληψης.

//παίρνει την ποσότητα από την προηγούμενη σελίδα
$quantity = $_GET['quantity'];

foreach($_SESSION['cart'] as $prod_id => $quantity)
{
echo "<form method=\"GET\" action=\"".$_SERVER['PHP_SELF']."\" onsubmit=\"return isNumeric(document.getElementById('numbers'), 'Η τιμή που πληκτρολογήσατε δεν είναι έγκυρη!')\">";
echo "<input type=\"hidden\" size=\"7\" name=\"prod_id\" value='".$prod_id."' />";
echo "<td class=\"cart\" align=\"center\"><input type=\"text\" title=\"Αλλαγή ποσότητας προϊόντος\" align=\"center\" size=\"7\" name=\"quantity\" value='".$quantity."' id='numbers'/></td>";
echo "<td class=\"cart\" align=\"center\"><input type=\"submit\" title=\"Ανανέωση ποσότητας προϊόντος\" name=\"submit\" value=\"Ανανέωση\" /></td>";
echo "</form>";
}

Άβαταρ μέλους
burnmind
Script Master
Δημοσιεύσεις: 954
Εγγραφή: 26 Σεπ 2009 02:14
Τοποθεσία: UK
Επικοινωνία:

Javascript με υποχρεωτικό πεδίο integer

Δημοσίευση από burnmind » 07 Ιουν 2010 03:02

Tania Vidaki έγραψε:Την ίδια συνάρτηση έχω βάλει και στη διαδικασία της ανανέωσης ποσότητας στο καλάθι μου αλλά ελέγχει μόνο την πρώτη σειρά ενώ είναι μέσα στο loop της επανάληψης.

//παίρνει την ποσότητα από την προηγούμενη σελίδα
$quantity = $_GET['quantity'];

foreach($_SESSION['cart'] as $prod_id => $quantity)
{
echo "<form method="GET" action="".$_SERVER['PHP_SELF']."" onsubmit="return isNumeric(document.getElementById('numbers'), 'Η τιμή που πληκτρολογήσατε δεν είναι έγκυρη!')">";
echo "<input type="hidden" size="7" name="prod_id" value='".$prod_id."' />";
echo "<td class="cart" align="center"><input type="text" title="Αλλαγή ποσότητας προϊόντος" align="center" size="7" name="quantity" value='".$quantity."' id='numbers'/></td>";
echo "<td class="cart" align="center"><input type="submit" title="Ανανέωση ποσότητας προϊόντος" name="submit" value="Ανανέωση" /></td>";
echo "</form>";
}
Το id πρέπει να είναι μοναδικό. Για παράδειγμα, μπορείς να προσθέσεις στο κάθε "numbers" και το "prod_id":

Κώδικας: Επιλογή όλων

$quantity = $_GET&#91;'quantity'&#93;;

foreach&#40;$_SESSION&#91;'cart'&#93; as $prod_id => $quantity&#41; 
&#123;
echo "<form method="GET" action="".$_SERVER&#91;'PHP_SELF'&#93;.""   onsubmit="return isNumeric&#40;document.getElementById&#40;'numbers".$prod_id."'&#41;, 'Η τιμή που πληκτρολογήσατε δεν είναι έγκυρη!'&#41;">";							
	echo "<input type="hidden" size="7" name="prod_id" value='".$prod_id."' />"; 
	echo "<td class="cart" align="center"><input type="text" title="Αλλαγή ποσότητας προϊόντος" align="center" size="7" name="quantity" value='".$quantity."' id='numbers".$prod_id."'/></td>";
	echo "<td class="cart" align="center"><input type="submit" title="Ανανέωση ποσότητας προϊόντος" name="submit" value="Ανανέωση" /></td>";
echo "</form>";								
&#125;

Απάντηση

Επιστροφή στο “JavaScript και Frameworks”

Μέλη σε σύνδεση

Μέλη σε αυτήν τη Δ. Συζήτηση: Δεν υπάρχουν εγγεγραμμένα μέλη και 0 επισκέπτες