Author |
Message |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 16/09/2007 11:06:26
|
apfmiranda
![[Avatar]](/images/avatar/8fe0093bb30d6f8c31474bd0764e6ac0.jpg)
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 |
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 16/09/2007 12:07:03
|
robertwgil
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 |
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 16/09/2007 12:17:38
|
apfmiranda
![[Avatar]](/images/avatar/8fe0093bb30d6f8c31474bd0764e6ac0.jpg)
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 |
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 16/09/2007 13:12:32
|
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 |
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 16/09/2007 13:27:00
|
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!
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 16/09/2007 14:22:53
|
apfmiranda
![[Avatar]](/images/avatar/8fe0093bb30d6f8c31474bd0764e6ac0.jpg)
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 |
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 22/11/2011 07:25:24
|
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?
|
|
 |
|