Wednesday, June 5, 2024
 Popular · Latest · Hot · Upcoming
72
rated 0 times [  77] [ 5]  / answers: 1 / hits: 20433  / 14 Years ago, sat, october 2, 2010, 12:00:00

I have a form generated dynamically with the method .append() of jQuery.
I can add any number of new input, textbox, cmbbox, etc...



But the problem is that when I do the sumbit of the form, the PHP target does not receive the new input added, but just the vars connected to the input already in the form before the append().



Any ideas?





The javascript:



$(#button).live('click',function add(){
$(#list).append(
'<li style=height:20px;>'
+'<input type=text class=text id=prova name=prova[] value=prova>'+
'</li>'
);
});




The Html:



<input type=submit id=button value=Add input>
<form name = form id=form action=post.php method=POST>
<ul style=width:670px;padding:0px 0px 30px 0px id=list>
</ul>
<input type=submit id=submit value=Submit>
</form>




The PHP:



<?php
print_r($_POST);
?>

More From » jquery

 Answers
58

Problem 1:



Your #button should not be of type submit, since you just want to use it to add to the form and not submit the form. So you should have:



<input type=button id=button value=Add input>





Problem 2:



You are overwriting your variables. The name is the variable sent with the form, so each input addition must have a new name, or the variable must be an array.



Additionally, you can't have more than one element with the same id.



The simplest way to solve this is to make prova an array by using the form prova[]:



$(#button).live('click',function() {
$(#list).append(
'<li style=height:20px;>' +
// Removed repetitive ID and made prova an array
'<input type=text class=text name=prova[] value=prova></li>'
);
});


jsFiddle example


[#95431] Thursday, September 30, 2010, 14 Years  [reply] [flag answer]
Only authorized users can answer the question. Please sign in first, or register a free account.
theo

Total Points: 680
Total Questions: 108
Total Answers: 81

Location: Laos
Member since Fri, Sep 11, 2020
4 Years ago
;