[Logo] Mentawai Forum - Mentawai Web Framework
  [Search] Search   [Recent Topics] Recent Topics   [Members]  Member Listing   [Groups] Back to home page 
[Register] Register / 
[Login] Login 

Forum Read-Only! Check the new site and forum here!

input de Formulário dinâmico [RESOLVIDO]  XML
Forum Index -> Comentários Gerais
Author Message
apfmiranda


[Avatar]

Joined: 30/08/2007 19:40:30
Messages: 54
Location: Porto - Portugal
Offline

Bem pessoal estou com a seguinte duvida, tenho um formulário onde estou adicionando inputs dinamicamente utilizando o seguinte javaScript:

Code:
function addInput(divPai,nomeElemento,numeroDeFilhos,sizeInput) {		
 			var DivElementoPai = document.getElementById(divPai);
 			// somo mais 1 para que o elemento comece com name=elemento[1]
 			// pois por padrão já existe um elemento com name=elemento[0]
 			var elementos = DivElementoPai.childNodes.length+1;
 			var elementInput = document.getElementById(nomeElemento+'[0]')
 			if(elementInput.value != ""){
 							
 				if (DivElementoPai.childNodes.length < numeroDeFilhos){ 	            
 					var NovoDiv = document.createElement('div');
 					var valorElementoImput = elementInput.value;
 					elementInput.value = "";					
 					NovoDiv.setAttribute("id",nomeElemento+elementos);
 					NovoDiv.setAttribute("valign","top");					
 					NovoDiv.innerHTML = '<input type="text" name='+nomeElemento+'['+elementos+'] id='+nomeElemento+'['+elementos+'] value='+"\'"+valorElementoImput+"\'"+' size='+sizeInput+'> <input type="button" value="X" onClick="delElemento('+"\'"+divPai+"\',\'"+nomeElemento+elementos+'\')"\><br> ';					
 					DivElementoPai.appendChild(NovoDiv);		            
 	            }
             }
         }
         function delElemento(divPai,divNum){
             var d = document.getElementById(divPai);
             var oldElem = document.getElementById(divNum);
             	
             if (confirm('Tem certeza que quer apagar: \n'+"\""+oldElem.firstChild.value+"\" ?")) {
 	            //remove o elemento 
 	            d.removeChild(oldElem);
             }
         }


Meu formulário:

Code:
<form action="DocumentoManagerAction.insert.mtw" method="post" name="formInsertDocumento">
 <table>
 	<tr>
 		<td ><label for="docTitulo">Titulo Documento</label></td>
 	</tr>
 	<tr>
 		<td><input name="docTitulo" id="docTitulo" size="45" type="text"></td>			
 	</tr>
 	<tr>
 		<td><label for="autor">Autores: </label></td>		
 	</tr>
 	<tr>
 		<td valign="top">						  
 			<input name="autores[0]" id="autores[0]" size="45" type="text">
 			<input type="button" nme="add" value="+" onclick="addInput('divAutores','autores',4,45)" >
 			<div id="divAutores"></div>
 		</td>		
 	</tr>
 </table>
 <br/>
 <br/>
 <input type="submit" value="enviar">
 </form>


Como faria para pegar isso na minha action, lembrando que tenho um mapeamento ManyToMany.

To precisando de uma luz.

Valeu.

Alexandre Miranda
[Email]
robertwgil


[Avatar]
Joined: 23/02/2007 17:22:13
Messages: 745
Location: São Paulo - SP - Brasil
Offline

Na action tu vai pegar pelo nome normalmente.. ali pelo jetio vai ser
nome + numero

por exemplo se voce colocou name = pass na action voce iria pegar assim

String pass = input.getStringValue("pass1");

etc... isso porque é assim que voce esta fazendo no teu script

apfmiranda wrote:

ar DivElementoPai = document.getElementById(divPai);
// somo mais 1 para que o elemento comece com name=elemento[1]
// pois por padrão já existe um elemento com name=elemento[0]
var elementos = DivElementoPai.childNodes.length+1;
var elementInput = document.getElementById(nomeElemento+'[0]')
 

Robert Gil
Coordenador de Desenvolvimento / Administrador de Redes.

Twitter
[Email] [MSN]
apfmiranda


[Avatar]

Joined: 30/08/2007 19:40:30
Messages: 54
Location: Porto - Portugal
Offline

Pesei em algo mais simples Robert, pois meu formulário é muito grande e se
houvesse um jeito de meus imputs serem reconhecidos como um list exemplo:

Autores
autores[0]
autores[1]
autores[2]
autores[3]

Se eu conseguise receber isso no input de forma que "autores" fosse uma
lista seria mais simples, do contrario acho que vou ter que fazer um loop pra
verificar quais inputs existem.


Alexandre Miranda
[Email]
YkyMatt



Joined: 15/08/2007 15:47:05
Messages: 229
Location: RS / Brasil
Offline

Cara, acho que a maneira mais simples de tu fazeres isto será criando elementos com o mesmo nome:

Code:
 var newAuthor = document.createElement("INPUT");
 newAuthor.setAttribute("name", "autores");
 div.appendChild(newAuthor);
 


Pra acessar esses autores na página você usará:

Code:
 var authors = document.getElementsByName("autores");
 
 for (author = 0; author < authors.length; author++)
   {
    var fieldAuthor = authors[author];
   }
 


E na Action você pode usar:

Code:
 public class MyAction extends BaseAction
   {
    ...
    String[] authors = input.getStringValues("autores");
    ...
   }
 

Jéferson C. Flores
Compusoft - Desenv. de Sistemas Empresariais

Mentawai Evangelist
http://www.chronusteam.com
[MSN]
Jalerson



Joined: 19/02/2007 21:10:43
Messages: 65
Offline

De fato Miranda, conforme explicado pelo Matt, se num form você tiver vários inputs com o mesmo name (por exemplo "autores"), na Action você poderá capturar todos os autores num array.

YkyMatt wrote:

Code:
 public class MyAction extends BaseAction
   {
    ...
    String[] authors = input.getStringValues("autores");
    ...
   }
 
 


Acho que é isso que você quer.

Até mais!
[MSN]
apfmiranda


[Avatar]

Joined: 30/08/2007 19:40:30
Messages: 54
Location: Porto - Portugal
Offline

Valeu ai pessoal!!!

Muito util a ajuda.

Simplificou um bocado as coisas!

Alexandre Miranda
[Email]
fredgma



Joined: 22/11/2011 07:23:03
Messages: 1
Offline

apfmirandatd bom?!
É possivel recuperar os valores dos inputs files através do metodo $_FILES? Se sim como?
 
Forum Index -> Comentários Gerais
Go to:   
Powered by JForum 2.1.6 © JForum Team