XicoXperto Posted July 16, 2012 at 06:00 PM Report Share #468903 Posted July 16, 2012 at 06:00 PM Boas malta! A situação com a qual me deparo neste momento é: Necessito de fazer a cópia de um form para usar o antigo como backup para isso faço: - crio o novo formulário - leio o total de elementos necessários (os forms podem ter vários contactos, documentos, etc..) - faço a criação do total de elementos necessários (aqui é que está o problema) - copio os valores. Como disse é na parte de criação dos elementos que tenho o problema, isto porque, dependendo da abordagem que experimentei tive alguns problemas como copiar sempre para o mesmo elemento, tentar copiar para um elemento que ainda não existe, e coisas assim. Então a ultima ideia que tive foi verificar se o elemento a ser copiado tem disponivel o elemento de destino, no entanto, a abordagem que fiz (parece-me que) enquanto está no while não faz a parte do ajax, então não sai do while. Alguma ideia? aqui está a função que estou a usar no momento function copyElementsToNewForm ( name , container , button ) { // get the total of elements to be copied var total = $( "#" + name + "-backup " + container ).size(); // get the actual available elements var actual= $( "#" + name + " " + container ).size(); // get the value of the element counting var actualNumber = $( "#" + name + " #" + name + "-hiddenContacto").val(); // while there aren't enough elements create new ones while ( total > actual ) { // re-read values actualNumber = $( "#" + name + " #" + name + "-hiddenContacto").val(); actual= $( "#" + name + " " + container ).size(); // if the number on hidden value is equal to the real number of elements make a new click if ( actualNumber == actual ) $( "#" + name + ' #' + button ).click(); } } Infelizmente já ando a tentar dar a volta a esta função à 3 dias, ficaria muito agradecido se alguém me pude-se dizer o que estou a fazer de errado, ou me orientar numa outra solução. Qualquer ideia, teste ou opinião é bem vinda! Obrigado malta Link to comment Share on other sites More sharing options...
HappyHippyHippo Posted July 16, 2012 at 06:02 PM Report Share #468904 Posted July 16, 2012 at 06:02 PM podes explicar melhor esta parte Necessito de fazer a cópia de um form para usar o antigo como backup para isso faço isso parece ser uma solução demasiado rebuscada para ser viável IRC : sim, é algo que ainda existe >> #p@p Portugol Plus Link to comment Share on other sites More sharing options...
XicoXperto Posted July 16, 2012 at 06:31 PM Author Report Share #468913 Posted July 16, 2012 at 06:31 PM isto é o seguinte, preciso fazer edição de um formulário, e que quando o utilizador "cancelar" as alterações, necessito de ter os dados guardados, para isso pensei sem fazer ".clone()" do formulário, no entanto devido a estar a usar jqTransform, e outros plugins, nunca consegui por a funcionar decentemente. Então pensei em deixar o antigo hidden (como já fazia na abordagem anterior) e criar um form de raiz. A ideia é mesmo ter um formulário extra para edição dos dados (preciso de ter backup para o caso do utilizador não querer guardar as alterações). Está esquesito, mas deu para entender'? Link to comment Share on other sites More sharing options...
HappyHippyHippo Posted July 16, 2012 at 06:38 PM Report Share #468914 Posted July 16, 2012 at 06:38 PM porque não adicionas uma classe tipo "form_item_added" a todos os elementos adicionados e depois é só remover todos os elementos com essa classe ? IRC : sim, é algo que ainda existe >> #p@p Portugol Plus Link to comment Share on other sites More sharing options...
XicoXperto Posted July 16, 2012 at 06:39 PM Author Report Share #468915 Posted July 16, 2012 at 06:39 PM No proprio form? Se for no próprio form como faço no caso de escreverem por cima dos dados antigos, ou eliminarem elementos? Link to comment Share on other sites More sharing options...
HappyHippyHippo Posted July 16, 2012 at 06:45 PM Report Share #468918 Posted July 16, 2012 at 06:45 PM solução ainda mais simples : load do formulário por ajax, sempre que carregares no botão reset/cancel, é só fazer novo pedido ... IRC : sim, é algo que ainda existe >> #p@p Portugol Plus Link to comment Share on other sites More sharing options...
XicoXperto Posted July 16, 2012 at 06:57 PM Author Report Share #468920 Posted July 16, 2012 at 06:57 PM solução ainda mais simples : load do formulário por ajax, sempre que carregares no botão reset/cancel, é só fazer novo pedido ... Não entendi Link to comment Share on other sites More sharing options...
HappyHippyHippo Posted July 16, 2012 at 07:02 PM Report Share #468922 Posted July 16, 2012 at 07:02 PM (edited) visto usares jqTransform terás a fazer include do jQuery ... exemplo (Nao testado e muito minimalista para exemplo) : // ajax_formulario.php <input name="campo1" /> <input name="campo2" /> // formulario.php <!DOCTYPE html> <html> <head> <script type="text/javascript"> function loadForm() { $('#form').load('ajax_formulario'); } $(document).ready(function () { loadForm(); } </script> </head> <body> <form id="form"> </form> <input type="button" onclick="loadForm();" value="reset" /> </body> </html> Edited July 16, 2012 at 07:03 PM by HappyHippyHippo IRC : sim, é algo que ainda existe >> #p@p Portugol Plus Link to comment Share on other sites More sharing options...
XicoXperto Posted July 16, 2012 at 07:09 PM Author Report Share #468923 Posted July 16, 2012 at 07:09 PM Sim sim, essa é a minha ultima ideia, sempre que for para ser editado, crio um novo formulário e copio para lá os valores que estão no backup. - crio o novo formulário- leio o total de elementos necessários (os forms podem ter vários contactos, documentos, etc..) - faço a criação do total de elementos necessários (aqui é que está o problema) - copio os valores. O novo formulário vai ser o que o utilizador vai alterar, mas como tinha dito o problema é que o formulário é pedido por ajax, e depois cada bloco de elementos também é chamado por Ajax (por exemplo todos os elementos relativos a um emprego são 1 bloco). E o problema é que não sei como fazer para sincronizar a criação por Ajax, e só depois copiar os elementos relativos ao novo bloco. Como tinha referido a minha utlima ideia foi, antes de copiar o que seja, fazer a criação de todos os blocos de elementos necessários. Mas quando faço o "while" penso que ele não deixa executar mais nada até sair do "while": while ( total > actual ) { // re-read values actualNumber = $( "#" + name + " #" + name + "-hiddenContacto").val(); actual= $( "#" + name + " " + container ).size(); // if the number on hidden value is equal to the real number of elements make a new click if ( actualNumber == actual ) $( "#" + name + ' #' + button ).click(); } Link to comment Share on other sites More sharing options...
HappyHippyHippo Posted July 16, 2012 at 07:15 PM Report Share #468926 Posted July 16, 2012 at 07:15 PM mas que backup qual carapuça !!! eu estou a dizer para teres um script que te cria o HTML do formulário dependente da informação que tens na tua camada de persistência (Base de dados ou outra), depois quando fazes reset é só chamar o script novamente. IRC : sim, é algo que ainda existe >> #p@p Portugol Plus Link to comment Share on other sites More sharing options...
XicoXperto Posted July 16, 2012 at 07:16 PM Author Report Share #468927 Posted July 16, 2012 at 07:16 PM while ( total > actual ) { // re-read values actualNumber = $( "#" + name + " #" + name + "-hiddenContacto").val(); actual= $( "#" + name + " " + container ).size(); // if the number on hidden value is equal to the real number of elements make a new click if ( actualNumber == actual ) $( "#" + name + ' #' + button ).click(); } Explicação deste código variaveis: - actual -> variavel com o total de blocos existentes no momento (novo form) - total -> variavel com o total de blocos necessários (total de existentes no form de backup) - actualNumber -> variavel com o total de pedidos (ajax), este valor é posto num input escondido para saber o numero de "clicks" a ideia é enquanto o ajax não ficar na pagina, ele fica dentro do while até que o bloco apareça no form já estou a entender, vou exprimentar Link to comment Share on other sites More sharing options...
HappyHippyHippo Posted July 16, 2012 at 07:29 PM Report Share #468930 Posted July 16, 2012 at 07:29 PM ainda bem que percebeste porque sinceramente eu não percebi patavina que andas prai a dizer ... IRC : sim, é algo que ainda existe >> #p@p Portugol Plus Link to comment Share on other sites More sharing options...
XicoXperto Posted July 16, 2012 at 07:30 PM Author Report Share #468932 Posted July 16, 2012 at 07:30 PM ok, deixa estar então. Obrigado por tudo. Link to comment Share on other sites More sharing options...
yoda Posted July 16, 2012 at 07:43 PM Report Share #468935 Posted July 16, 2012 at 07:43 PM Parece-me que estás a ir por um caminho mais difícil, Ajudava se contextualizasses a situação. before you post, what have you tried? - http://filipematias.info sense, purpose, direction Link to comment Share on other sites More sharing options...
XicoXperto Posted July 16, 2012 at 07:55 PM Author Report Share #468937 Posted July 16, 2012 at 07:55 PM Parece que não consigo passar a minha ideia 😞 Vou tentar explicar o que pretendo para o utilizador, isto é: - o utilizador abre o formulário principal para criar uma familia - depois clica para criar uma nova pessoa, e abre um novo formulário especifico para pessoas - quando clicar em "adicionar" nada é gravado neste momento apenas aparece no formulário familia um pequeno resumo (e 2 botões para poder apagar ou editar o formulário da pessoa que acabou de adicionar) - sendo assim quando clicar em "editar", volta a abrir o formulário da pessoa que o utilizador tinha "adicionado" - o utilizador assim pode modificar, adicionar ou até remover os dados que tinha posto anteriormente - sendo que depois pode "adicionar" (alterar) ou cancelar (não efectuar nenhuma alteração) O problema é que se o utilizador, por exemplo se enganar a passar os dados e pretender não fazer nenhuma alteração como faço para poder ter os dados salvaguardados? (todos os dados são adicionados no lado do cliente, e do lado do servidor apenas crio por ajax o formulário vazio) Consegui explicar? Link to comment Share on other sites More sharing options...
HappyHippyHippo Posted July 16, 2012 at 07:59 PM Report Share #468938 Posted July 16, 2012 at 07:59 PM não fazes nada ... tu próprio o disseste : (todos os dados são adicionados no lado do cliente, e do lado do servidor apenas crio por ajax o formulário vazio) IRC : sim, é algo que ainda existe >> #p@p Portugol Plus Link to comment Share on other sites More sharing options...
XicoXperto Posted July 16, 2012 at 08:20 PM Author Report Share #468944 Posted July 16, 2012 at 08:20 PM não fazes nada ... tu próprio o disseste : Ainda não entendi onde queres chegar, mas pronto. Link to comment Share on other sites More sharing options...
HappyHippyHippo Posted July 16, 2012 at 08:27 PM Report Share #468949 Posted July 16, 2012 at 08:27 PM o formulário só existe no browser do lado do cliente, se não é para gravar porque não quer, não necessitas de fazer nada IRC : sim, é algo que ainda existe >> #p@p Portugol Plus Link to comment Share on other sites More sharing options...
XicoXperto Posted July 16, 2012 at 10:22 PM Author Report Share #468960 Posted July 16, 2012 at 10:22 PM Em 16/07/2012 às 22:27, HappyHippyHippo disse: o formulário só existe no browser do lado do cliente, se não é para gravar porque não quer, não necessitas de fazer nada e esta é a imagem do formulário familia já com 2 pessoas inseridas: http://imageshack.us/photo/my-images/256/screenshot20120716at930.png esta é a imagem do formulário para pessoas: http://imageshack.us/photo/my-images/843/screenshot20120716at929.png Como se pode ver na parte do formulário familia, as pessoas que estão "inseridas" tem 2 botões, na realidade os formulários respectivos apenas estão "hidden" sendo que neste formulário só aparece um resumo de cada pessoa e 2 botões para gerir, 1 para apagar e outro para editar. A questão está na parte de edição das pessoas que já foram "adicionadas" à familia. Espero que isto ajude... Link to comment Share on other sites More sharing options...
XicoXperto Posted July 16, 2012 at 10:58 PM Author Report Share #468967 Posted July 16, 2012 at 10:58 PM Neste momento estou a tentar uma abordagem diferente. quando acabar digo se fui bem sucedido Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now