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

Προσθήκη κελιών σε φόρμα


lion2486

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

Δημοσ.

Γειά σας, έχω μια φόρμα html με ένα table, και με javascript εισάγω δυναμικά νέα κελιά, αλλά όπως παρατήρησα αυτά δεν υποβάλλονται σε $_POST

O javascript κώδικας είναι σαν τον παρακάτω... στη μεταβλητή num κρατάω τα στοιχεία που τελικά υποβάλλονται, ώστε να μπορώ να τα διαχειριστώ.

>
function addRowToTable()
{
 var tbl = document.getElementById('cards');
 var lastRow = tbl.rows.length;
 var iteration = parseInt(lastRow) + 1;
 var row = tbl.insertRow(lastRow);
 var form = document.getElementById('form1');
 var num = form.elements["num"].value;
 
 var cellLeft = row.insertCell(0);
 var textNode = document.createTextNode(iteration);

 cellLeft.appendChild(textNode);
 var cellRight = row.insertCell(1);

 var el = document.createElement('input');
 el.type = 'text';
 el.name = 'Part:rn1-' + iteration;
 el.size = 4;
 
 cellRight.appendChild(el);
 form.elements["num"].value = parseInt(num);
}

Δημοσ.

Αν και δεν πολυκατάλαβα τι κάνεις, δοκίμασε να δώσεις το ίδιο όνομα στα input σου. Για παράδειγμα <input type="text" name="part[]" ... />. Στο $_POST θα πάρεις το part σαν πίνακα όπου θα υπάρχουν οι τιμές από όλα τα κελιά.

Δημοσ.

Μπερδεύτηκα και εγώ με αυτό... Μπορώ να κάνω κάτι τέτοιο;

<input type="text" name="part[]" />

<input type="text" name="part" />

 

Πως δηλώνω το πρώτο; Πώς τα υπόλοιπα;

Μετα με μια for($i=0;$i<NUM;$i++) $_POST['part'][$i];

θα μπορώ να τα προσπελάσω;

Δημοσ.

Μπορείς να κάνεις κάτι τέτοιο σε javascript

>
var divIdName = "myDiv";
var newdiv = document.createElement('div');
newdiv.setAttribute("id",divIdName);
newdiv.innerHTML = "<input name='my_new_field' id='my_new_field' type='text' value='' class='myclass'>";
ni.appendChild(newdiv);

Όπου ουσιστικά πάει στο div με ΙD = "myDiv" και βάζει ένα text πεδίο.

Εκεί μπορεί να βάλεις ότι θέλεις.

Δημοσ.

Μπορείς να κάνεις κάτι τέτοιο σε javascript

>
var divIdName = "myDiv";
var newdiv = document.createElement('div');
newdiv.setAttribute("id",divIdName);
newdiv.innerHTML = "<input name='my_new_field' id='my_new_field' type='text' value='' class='myclass'>";
ni.appendChild(newdiv);

Όπου ουσιστικά πάει στο div με ΙD = "myDiv" και βάζει ένα text πεδίο.

Εκεί μπορεί να βάλεις ότι θέλεις.

εδω θα το κάνω append σε ένα element της φόρμας μου ή στην ιδια τη φόρμα; Γιατι του ορίζεις ενα ID και μετά περνάς άλλο; Υπάρχει λόγος;

Δημοσ.

Όλα θα έχουν ως όνομα το part[]. Δηλαδή:

><input type="text" name="part[]" ... />
<input type="text" name="part[]" ... />
.
.
.

 

Έπειτα πιστεύω πως μπορείς να πάρεις τις τιμές κάνοντας:

>for($i=0; $< count($_POST['part']); $i++)
{
...
}

Δεν έχω δοκιμάσει τον κώδικα.

Δημοσ.

Όλα θα έχουν ως όνομα το part[]. Δηλαδή:

><input type="text" name="part[]" ... />
<input type="text" name="part[]" ... />
.
.
.

 

Έπειτα πιστεύω πως μπορείς να πάρεις τις τιμές κάνοντας:

>for($i=0; {:content:}lt; count($_POST['part']); $i++)
{
$_POST['part'][$i]
...
}

Δεν έχω δοκιμάσει τον κώδικα.

 

σωστά τα λες έτσι πάει

Δημοσ.

εδω θα το κάνω append σε ένα element της φόρμας μου ή στην ιδια τη φόρμα; Γιατι του ορίζεις ενα ID και μετά περνάς άλλο; Υπάρχει λόγος;

Βασικά αυτός είναι ο σωστός ο κώδικας (είχα ξεχάσει μία γραμμή)

>
var ni = document.getElementById('myDiv');
var divIdName = "first_div";
var newdiv = document.createElement('div');
newdiv.setAttribute("id",divIdName);
newdiv.innerHTML = "<input name='my_new_field' id='my_new_field' type='text' value='' class='myclass'>";
ni.appendChild(newdiv);

Ουσιαστικά έχεις ένα div στον κώδικα σου που είναι άδειο. Στο παράδειγμα μας το div αυτό έχει id = myDiv

Και μέσα σε αυτό το div πας και δημιουργείς ένα άλλο element με id = first_div (μπορείς με το newdiv.setAttribute να του προσθέσεις και άλλα attribute) και μέσα σε αυτό δημιουργείς ένα input text

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

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

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