έλεγχος σε πολλαπλά inputs να υποβάλουν τουλάχιστον ένα?

Σε αυτή την περιοχή μπορείτε να βρείτε ή να αναζητήσετε πληροφορίες σχετικές με την PHP

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

Απάντηση
sibas
Honorary Member
Δημοσιεύσεις: 1857
Εγγραφή: 21 Φεβ 2003 01:21
Τοποθεσία: Μια εδώ.. Μια εκεί.. Σήμερα είμαι εδώ!!!
Επικοινωνία:

έλεγχος σε πολλαπλά inputs να υποβάλουν τουλάχιστον ένα?

Δημοσίευση από sibas » 23 Αύγ 2014 14:22

Γεια χαρά

Ψάχνω να βρω ένα τρόπο (αλλά έχω κολήσει) στο να ελέγχω την υποβολή τουλάχιστον σε ένα πεδίο σε μια σειρά από πολλά πεδία!

πχ

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

<form method="post" name="go">
ποιο πάνω έχει άλλα πεδία
<input type="text" name="in1" id="in1" value="" />
<input type="text" name="in2" id="in2" value="" />
<input type="text" name="in3" id="in3" value="" />
ποιο κάτω έχει άλλα πεδία
</form>
πως μπορώ να κάνω υποχρεωτικό το να προσθέσει κάποιος value σε ένα από αυτά τα τρια ή όλα, αρκεί να μην είναι άδεια!
καμιά ιδέα?

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

έλεγχος σε πολλαπλά inputs να υποβάλουν τουλάχιστον ένα?

Δημοσίευση από korgr » 23 Αύγ 2014 20:07

Θα πρόσθετα ένα data-required attribute στα text boxes και στο onsubmit θα επέστρεφα την τιμή από μια function του τύπου:

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

function check&#40;&#41;&#123;
$&#40;input&#91;data-required&#93;&#41;.each&#40;function&#40;&#41;&#123;
if&#40;$&#40;this&#41;.val&#40;&#41;&#41; return true;
&#125;&#41;;
alert&#40;"error message"&#41;;
return false;
&#125;

gvre
Δημοσιεύσεις: 992
Εγγραφή: 14 Οκτ 2010 11:34
Τοποθεσία: Ηράκλειο Κρήτης
Επικοινωνία:

έλεγχος σε πολλαπλά inputs να υποβάλουν τουλάχιστον ένα?

Δημοσίευση από gvre » 24 Αύγ 2014 10:43

sibas έγραψε:Γεια χαρά

Ψάχνω να βρω ένα τρόπο (αλλά έχω κολήσει) στο να ελέγχω την υποβολή τουλάχιστον σε ένα πεδίο σε μια σειρά από πολλά πεδία!

πχ

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

<form method="post" name="go">
ποιο πάνω έχει άλλα πεδία
<input type="text" name="in1" id="in1" value="" />
<input type="text" name="in2" id="in2" value="" />
<input type="text" name="in3" id="in3" value="" />
ποιο κάτω έχει άλλα πεδία
</form>
πως μπορώ να κάνω υποχρεωτικό το να προσθέσει κάποιος value σε ένα από αυτά τα τρια ή όλα, αρκεί να μην είναι άδεια!
καμιά ιδέα?
Υποθέτοντας ότι έχεις ήδη αποθηκεύσει τις τιμές των in1, in2, in3 στις αντίστοιχες μεταβλητές, μπορείς να χρησιμοποιήσεις ένα από τα παρακάτω (όποιο σε βολεύει).

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

var emptyIn = !&#40;in1 || in2 || in3&#41;;
var emptyIn = !in1 && !in2 && !in3;
Στη συνέχεια, μπορείς να χρησιμοποιήσεις το αποτέλεσμα με όποιον τρόπο θέλεις.

@korgr Η return μέσα στην callback τής .each θα κάνει continue αν ακολουθείται από true ή break αν ακολουθείται από false. Με την έξοδο από το loop θα εκτελεστεί ο κώδικας που ακολουθεί.

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

alert&#40;"error message"&#41;;
return false; 

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

έλεγχος σε πολλαπλά inputs να υποβάλουν τουλάχιστον ένα?

Δημοσίευση από korgr » 24 Αύγ 2014 11:37

gvre από ότι κατάλαβα είναι παράδειγμα τα 3 πεδία (μπορεί να είναι και 13)

Οπότε σύμφωνα με αυτό που λες για την callback (το οποίο δεν γνώριζα) θα πρότεινα την εξής μεταβολή στη λύση μου:

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

function check&#40;&#41;&#123; 
window.returnValue = false;
$&#40;input&#91;data-required&#93;&#41;.each&#40;function&#40;&#41;&#123; 
if&#40;$&#40;this&#41;.val&#40;&#41;&#41; window.returnValue = true; 
&#125;&#41;; 
if&#40;!window.returnValue&#41; alert&#40;"error message"&#41;; 
return window.returnValue; 
&#125;

gvre
Δημοσιεύσεις: 992
Εγγραφή: 14 Οκτ 2010 11:34
Τοποθεσία: Ηράκλειο Κρήτης
Επικοινωνία:

έλεγχος σε πολλαπλά inputs να υποβάλουν τουλάχιστον ένα?

Δημοσίευση από gvre » 24 Αύγ 2014 12:53

Προφανώς, ανάλογα τον αριθμό των πεδίων και τον τρόπο που δημιουργούνται μπορεί να εφαρμοστεί διαφορετική λύση. Σχετικά με το data-required, προσωπικά, δε θα το χρησιμοποιούσα στη συγκεκριμένη περίπτωση, επειδή δεν απαιτούνται όλα τα πεδία, αλλά τουλάχιστον ένα από αυτά.
Σχετικά με τη συνάρτηση ελέγχου, μπορείς να χρησιμοποιήσεις ένα local var αντί το window object. Επίσης, μπορείς να κάνεις return false από το callback μόλις δεις ότι κάποιο πεδίο έχει τιμή, για να γλυτώσεις μερικά iterations του loop.

sibas
Honorary Member
Δημοσιεύσεις: 1857
Εγγραφή: 21 Φεβ 2003 01:21
Τοποθεσία: Μια εδώ.. Μια εκεί.. Σήμερα είμαι εδώ!!!
Επικοινωνία:

έλεγχος σε πολλαπλά inputs να υποβάλουν τουλάχιστον ένα?

Δημοσίευση από sibas » 24 Αύγ 2014 14:14

Προτιμώ μια php λύση έναντι javascript, ο gvre μου έδωσε μια ιδέα και την δοκίμασα, τοπικά μοιάζει να λειτουργεί αλλά πείτε αν είναι σωστό!

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

if&#40;empty&#40;$_POST&#91;'in1'&#93;&#41; && empty&#40;$_POST&#91;'in2'&#93;&#41; && empty&#40;$_POST&#91;'in3'&#93;&#41; &#41;&#123;
$error = 'fill one input on in1, in2, in3!';
&#125;

Άβαταρ μέλους
dva_dev
Script Master
Δημοσιεύσεις: 3790
Εγγραφή: 16 Σεπ 2005 01:32
Επικοινωνία:

έλεγχος σε πολλαπλά inputs να υποβάλουν τουλάχιστον ένα?

Δημοσίευση από dva_dev » 24 Αύγ 2014 17:02

Η php λύση αν και σε εξασφαλίζει προσθέτει ένα roundtrip στο server σε περίπτωση που δεν είναι κάποιο συμπληρωμένο.
Αν βάλεις ΚΑΙ τον javascript κώδικα σε κανονικές συνθήκες γλυτώνεις από το roundtrip.
Πάντως αν είναι να βάλεις μόνο το ένα από τα δύο βάλε τον έλεγχο στην php.

Απάντηση

Επιστροφή στο “PHP Προγραμματισμός”

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

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