pass variable array to js

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

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

Απάντηση
txc
Δημοσιεύσεις: 626
Εγγραφή: 02 Δεκ 2003 23:08

pass variable array to js

Δημοσίευση από txc » 24 Φεβ 2016 23:55

καλησπέρα παιδιά,
μια ερώτηση, σε φόρμα έχω πολλά πεδία σε array δηλαδή :

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

<input name="Activity&#91;&#93;" type="text" id="Activity&#91;&#93;" size="30" />
στο κάθε input type έχω μια js function που τρέχει που θέλω να πάρω τη τρέχουσα τιμή από το input type
πως θα διαβάσω τη τρέχουσα τιμή στο js function? το περνάω σε παράμετρο το Activity[] αλλά δε παίζει

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

<a href="javascript&#58;checkemail&#40;'Activity&#91;&#93;'&#41;;">check</a>
ευχαριστώ

Άβαταρ μέλους
giannis17
Honorary Member
Δημοσιεύσεις: 1215
Εγγραφή: 06 Ιαν 2005 19:50
Τοποθεσία: Παγκράτι - Αθήνα
Επικοινωνία:

pass variable array to js

Δημοσίευση από giannis17 » 25 Φεβ 2016 08:52

Κατ' αρχάς στο id δεν μπορείς να έχεις brackets, βασικά μόνο παύλες νομίζω μπορεί να πάρει από σύμβολα, και καλό είναι να είναι μοναδικά (π.χ. Activity1, Activity2 κλπ). Στο name ναι γίνεται αλλά είναι απλά χαρακτήρες, δεν σημαίνει ότι θα σου ενώσει τα values σε ένα array από μόνο του.

Για να πάρεις τις τιμές όλες σε ένα array θα πρέπει είτε να κάνεις loop στην javascript σου ή αν χρησιμοποιείς jQuery μπορείς να χρησιμοποιήσεις την map.

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

jQuery&#40;'input&#91;name="Activity&#91;&#93;"&#93;'&#41;.map&#40;function&#40;&#41; &#123;return jQuery&#40;this&#41;.val&#40;&#41;;&#125;&#41;;
Τώρα χωρίς να ξέρω τι κάνει η function checkemail δεν μπορώ να βοηθήσω περισσότερο.
"There is only one problem with common sense; it’s not very common."
&#8211; Milt Bryce

txc
Δημοσιεύσεις: 626
Εγγραφή: 02 Δεκ 2003 23:08

pass variable array to js

Δημοσίευση από txc » 25 Φεβ 2016 08:56

βασικά θέλω να περνάω το εκάστοτε email στη function και να κάνω κάποια δουλειά εκεί.
άρα αυτό που θέλω είναι να έχω 10 text box με το κώδικα που έγραψα παραπάνω και δίπλα να έχω το ahref για να κάνω check το εκάστοτε email

αυτή είναι η λογική

αυτό που μου έστειλες είναι για να παίρνει όλες τις τιμές, αλλά δε με βολεύει γιατί θέλω να παίρνω τη συγκεκριμένη μόνο και να κάνω τον έλεγχο

Άβαταρ μέλους
giannis17
Honorary Member
Δημοσιεύσεις: 1215
Εγγραφή: 06 Ιαν 2005 19:50
Τοποθεσία: Παγκράτι - Αθήνα
Επικοινωνία:

pass variable array to js

Δημοσίευση από giannis17 » 25 Φεβ 2016 09:03

Η πιο εύκολη λύση είναι να μην το βάλεις καν σε κουμπί (link) αλλά πάνω στο input.
πχ

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

<input name="Activity&#91;&#93;" type="text" id="Activity&#91;&#93;" size="30" onblur="checkemail&#40;&#41;" />
οπότε κάθε φορά που θα ξεκλικάρει κάποιος θα τρέχει την checkemail

από εκεί και πέρα για να παίξεις με κουμπί θα πρέπει είτε να χρησιμοποιήσεις κάποιο μοναδικό id/name (πχ με αύξοντα αριθμό) και να δίνεις τον ίδιο αριθμό σε ένα attribute του link ή αν παίζεις με jQuery να πηγαινοέρχεσαι στο DOM με closest/parent/siblings/find ανάλογα πως έχεις τοποθετήσει το link σε σχέση με το input στο DOM.
"There is only one problem with common sense; it’s not very common."
&#8211; Milt Bryce

alou
Script Master
Δημοσιεύσεις: 1374
Εγγραφή: 24 Αύγ 2007 19:52
Επικοινωνία:

pass variable array to js

Δημοσίευση από alou » 25 Φεβ 2016 09:23

Σόρυ που μπαίνω σφήνα αλλά υπάρχει και άλλη λύση:

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

<input type="text" name="bar"> 

<a data-inputname="bar" href="#" onclick="javascript&#58;checkMail&#40;this.getAttribute&#40;'data-inputname'&#41;&#41;">do it</a>
και η fn το χειριζεται κάπως έτσι:

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

function checkMail&#40;target&#41; &#123;
	var theValue = document.getElementsByName&#40;target&#41;&#91;0&#93;.value;
	console.log&#40;theValue&#41;;
&#125;
Τώρα αν σε βολεύει αντί για name να χρησιμοποιήσεις id (με την προϋπόθεση ότι είναι μοναδικό) απλά θα αλλάξεις το getElementsByName(target)[0] σε getElementById(target) και τον τρόπο που παίρνεςι το attribute στο link.

Άβαταρ μέλους
giannis17
Honorary Member
Δημοσιεύσεις: 1215
Εγγραφή: 06 Ιαν 2005 19:50
Τοποθεσία: Παγκράτι - Αθήνα
Επικοινωνία:

pass variable array to js

Δημοσίευση από giannis17 » 25 Φεβ 2016 13:27

alou έγραψε:Σόρυ που μπαίνω σφήνα αλλά υπάρχει και άλλη λύση:

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

<input type="text" name="bar"> 

<a data-inputname="bar" href="#" onclick="javascript&#58;checkMail&#40;this.getAttribute&#40;'data-inputname'&#41;&#41;">do it</a>
και η fn το χειριζεται κάπως έτσι:

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

function checkMail&#40;target&#41; &#123;
	var theValue = document.getElementsByName&#40;target&#41;&#91;0&#93;.value;
	console.log&#40;theValue&#41;;
&#125;
Τώρα αν σε βολεύει αντί για name να χρησιμοποιήσεις id (με την προϋπόθεση ότι είναι μοναδικό) απλά θα αλλάξεις το getElementsByName(target)[0] σε getElementById(target) και τον τρόπο που παίρνεςι το attribute στο link.
nice, εγώ συνηθίζω να τα τραβάω όλα από το event.target
"There is only one problem with common sense; it’s not very common."
&#8211; Milt Bryce

txc
Δημοσιεύσεις: 626
Εγγραφή: 02 Δεκ 2003 23:08

pass variable array to js

Δημοσίευση από txc » 25 Φεβ 2016 17:03

giannis17 έγραψε:
alou έγραψε:Σόρυ που μπαίνω σφήνα αλλά υπάρχει και άλλη λύση:

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

<input type="text" name="bar"> 

<a data-inputname="bar" href="#" onclick="javascript&#58;checkMail&#40;this.getAttribute&#40;'data-inputname'&#41;&#41;">do it</a>
και η fn το χειριζεται κάπως έτσι:

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

function checkMail&#40;target&#41; &#123;
	var theValue = document.getElementsByName&#40;target&#41;&#91;0&#93;.value;
	console.log&#40;theValue&#41;;
&#125;
Τώρα αν σε βολεύει αντί για name να χρησιμοποιήσεις id (με την προϋπόθεση ότι είναι μοναδικό) απλά θα αλλάξεις το getElementsByName(target)[0] σε getElementById(target) και τον τρόπο που παίρνεςι το attribute στο link.
nice, εγώ συνηθίζω να τα τραβάω όλα από το event.target
παιδιά αυτή η λύση όμως δε παίρνει text με πίνακα έτσι, γιατί αν έχω 10 πεδία τότε θα πρέπει στη js κάθε φορά να διαβάζω το [0],[1] κλπ
σωστά?

alou
Script Master
Δημοσιεύσεις: 1374
Εγγραφή: 24 Αύγ 2007 19:52
Επικοινωνία:

pass variable array to js

Δημοσίευση από alou » 25 Φεβ 2016 17:39

Κάνε target με id απλά πρόσεξε να μην επαναλαμβάνεις το id:

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

function checkMail&#40;target&#41; &#123;
   var theValue = document.getElementById&#40;target&#41;.value;
   console.log&#40;theValue&#41;;
&#125;

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

<input type="text" name="bar" id="foo">
	<a data-inputID="foo" href="#" onclick="javascript&#58;checkMail&#40;this.getAttribute&#40;'data-inputID'&#41;&#41;">do it</a> 
Αν παράγεις τον πίνακα δυναμικά, βάλε ένα counter στη διαδικασία που το παράγεις και φτιάξε το id και το data-inputID να έχει το ίδιο id + νούμερο πχ foo1, foo2 klp

txc
Δημοσιεύσεις: 626
Εγγραφή: 02 Δεκ 2003 23:08

pass variable array to js

Δημοσίευση από txc » 25 Φεβ 2016 17:46

κάπου σε έχασα
έχω 30 πεδία με το τύπο που σου είπα
δηλαδή

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

<td width="67%" height="63"><input name="Activity&#91;&#93;" type="text" id="Activity&#91;&#93;" size="30" />
και θέλω σε κάθε πεδίο μια function Που να κάνει τη δουλειά
εκεί σε χάνω

ο λόγος που έχω πίνακα είναι ότι στην επόμενη σελίδα έχω αυτό :

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

$Activity = $_POST&#91;'Activity'&#93;;
			$limit = count&#40;$Activity&#41;;

for&#40;$i=0;$i<$limit;$i++&#41; &#123;
    $Activity&#91;$i&#93; = mysql_real_escape_string&#40;$Activity&#91;$i&#93;&#41;;

&#125;
για να κάνω insert τα πεδία σε βάση

Άβαταρ μέλους
giannis17
Honorary Member
Δημοσιεύσεις: 1215
Εγγραφή: 06 Ιαν 2005 19:50
Τοποθεσία: Παγκράτι - Αθήνα
Επικοινωνία:

pass variable array to js

Δημοσίευση από giannis17 » 25 Φεβ 2016 21:21

άλλαξε το id των πεδίων από id="Activity[]" σε Activity-1, Activity-2, Activity-3 κλπ

αν τα δημιουργείς με php θα βάλεις ένα counter στην λούπα σου, αν παίζεις με for μπορείς να χρησιμοποιήσεις τον ίδιο counter
πχ για foreach

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

$counter = 0;
foreach&#40;$fields as $input&#41;&#123;
 echo '<td width="67%" height="63"><input name="Activity&#91;&#93;" type="text" id="Activity-'.$counter.'" size="30" /><a href="javascript&#58;checkemail&#40;'Activity-'.$counter.''&#41;;">check</a> ';
$counter++;
&#125;
"There is only one problem with common sense; it’s not very common."
&#8211; Milt Bryce

Απάντηση

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

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

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