1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

[Jquery][Php] Passagem de dados de formulário

Discussão em 'Web Development' iniciada por Majin Vegeta, 12 de Julho de 2012. (Respostas: 1; Visualizações: 645)

  1. Majin Vegeta

    Majin Vegeta Power Member

    Boa tarde,
    o código que se segue é de uma página que tenho cuja função jquery duplica o formulário apresentado na parte html ao clicar num botão. O meu problema é que não estou a conseguir receber o conteúdo que escrevo nas inputs geradas pelo jquery. Alguém sabe como posso resolver o problema?

    Código:
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.3/jquery.min.js" type="text/javascript"></script>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
    <script type="text/javascript">
    
    
    	$countForms = 1;
    
    
    		(function($){
    		
    			  $.fn.addForms = function(idform){
    			 
    							var myform = "<table>"+
    							 "  <tr>"+
    							 "     <td>Field A ("+$countForms+"):</td>"+
    							 "     <td><input type='text' name='field["+$countForms+"][a]'></td>"+
    							 "     <td>Field B ("+$countForms+"):</td>"+
    							 "     <td><textarea name='field["+$countForms+"][b]'></textarea></td>"+
    							 "     <td><button>remove</button></td>"+
    							 "  </tr>"+
    							 "</table>";
    							 
    						
    							
    							if(idform=='mybutton'){
    								
    								myform = $(myform);
    								$("button", $(myform)).click(function(){ $(this).parent().parent().remove(); });
    								$(this).append(myform);
    								$countForms++;
    							}
    						  
    			  };
    		})(jQuery);         
    
    
    
    
    		
    		$(function(){
    			$("#mybutton").bind("click", function(e){
    			e.preventDefault();
    			var idform=this.id;
    			
    				if($countForms<3){
    					$("#container").addForms(idform);
    				}		
    			});
    		});
    		
    </script>
    </head>
    
    
    <?php
    $ligax=mysqli_connect('localhost','root');
    if(!$ligax){
    	echo '<p> Falha na ligação.'; exit;
    }
    mysqli_select_db($ligax,'dados_arrays');
    
    
    	if ( isset( $_POST['field'] ) )
    {
        echo '<table>';
        foreach ( $_POST['field'] as $diam )
        {
            echo '<tr>';
            echo '  <td>', $diam['a'], '</td>';
            echo '  <td>', $diam['b'], '</td>';
            echo '</tr>';
    		var_dump($_POST);
        }
        echo '</table>';
    	}
    
    
    ?>
    
    
    <body>
    
    
    <div>
    <form method="post" name="b" >
    <table>
    	<tr>
    		<td>Field A</td>
    		<td><input type='text' name='field[0][a]'></td>
    		<td>Field B</td>
            <td><textarea name="field[0][b]"></textarea></td>
            <td><button>remove</button></td>
        </tr>
    </table>
    </div>
    <div id="container"></div>
    <button id="mybutton">add form</button>
    						 
    <div align="center">
    <p><input type="submit" value="Registar" name="registar"></p>
    </div>
    </form>
    <?php
    	
    	if($ligax) mysqli_close($ligax);
    	
    ?>
    </body>
    </html>
    
    
    
     
  2. Não testei o codigo, mas uma vista por cima detectei o possivel problema:

    Abres um div antes de abrir o form, pelo que o form é um child do div, depois metes uma table (tudo ok), depois fechas o div, o browser sendo tolerante a erros corrige e fecha o formulário também, logo os inputs que metes no container estão fora do formulário.

    Sugestão:
    Mete a div dentro do form, assim o formulario passa a ser parent dos inputs que o teu jquery gera.


    <div>
    <form method="post" name="b" >
    <table>

    para

    <form method="post" name="b" >
    <div>
    <table>
     

Partilhar esta Página