Jump to content

Recommended Posts

Posted (edited)

Ola malta mais uma vez.

A questão é a seguinte, para fazer uma copia de um form para edição faço:

$( '#formASerCopiado' ).clone().attr('id', '#formASerCopiado' + "-copy").appendTo( $( '#formASerCopiado' ).parent() );

Ele copia integralmente, no entanto os datepickers, e os selects (transformados com jqTransform) simplesmente não funcionam.

Os selects aparecem com tamanho "0px" no span de texto, e o div aparece como se não tivesse informação nenhuma:

<div class="jqTransformSelectWrapper" style="z-index: 1; width: 45px; ">
<div>
 <span style="width: 0px; "> Grau de Parentesco</span>
 <a href="#" class="jqTransformSelectOpen"></a>
</div>
<ul style="width: 43px; height: 0px; overflow: hidden; display: none; visibility: visible; ">
 <li style="">
 <a href="#" index="0" class="selected"> Grau de Parentesco</a></li>
 <li><a href="#" index="1">Encarregado de Família</a></li>
 <li><a href="#" index="2">Pai/Mãe</a></li>
 <li><a href="#" index="3">Filho(a)</a></li>
 ...
</ul>
<select id="person0-parentType-copy" name="person[0][personal][parentType]" class="jqTransformHidden typed" style="" data-validation-engine="validate[required]">
 <option value=""> Grau de Parentesco</option>
 <option value="1">Encarregado de Família</option>
 <option value="2">Pai/Mãe</option>
 <option value="3">Filho(a)</option>
 …
</select>
</div>

Já os datepickers simplesmente não aparecem.

Alguma ideia do que possa ser?

Querem que faça post de mais código?

Edited by brunoais
geshi (para o html)
  • 6 months later...
Posted

nunca fui muito fã de clonar coisas..

qual o objetivo?

nem sei bem como funciona mas a verdade é que os ids devem ser únicos numa página...

e por isso... ao clonar.. ficas com ids repetidos... e não sei como se comporta o jQuery e os plugins neste caso..

mas admitindo que não é o caso...

há outras coisas que estão associadas.. nomeadamente dados e eventos....

que não são copiadas por omissão (à partida).

confirma as flags que o clone() recebe..

http://api.jquery.com/clone/

mas volto a perguntar... qual o objetivo final? para perceber se tens mesmo de recorrer ao clone.

Posted

Depois de clonar tens de inicializar novamente certos componentes, ou, caso seja permitido pelo(s) plugin(s), usar a função live() para assegurar que ficam com os eventos que queres.

@lsoares,

clonar pode ser bastante útil dependendo do objectivo que lhe dás, não é o acto de clonar que objectivo em si.

Eu por exemplo tenho uma classe .loading em CSS cujo markup vai sem display no site e que é clonado com uma mensagem particular para cada caso quando necessário. Assim que termina o loading, a classe e respectiva legenda desaparece, dando-me a possibilidade de ter vários "loading's" na mesma página sem grande esforço e sem que se intrometam uns com os outros.

Posted

Ola ola

Antes de mais peço desculpa pela demora.

Então passo a explicar a idea, pretendia-se:

- registar os dados de uma familia, então a ideia era fazer tudo do lado do cliente, e quando tivesse terminado enviar os dados para o servidor

- caso o utilizador pretende-se alterar algum elemento da familia já "registado" (isto é, do lado do cliente, pois ainda não estaria no servidor a esta altura), então o formulário original estaria hidden e fazia-se um clone para o utilizador alterar

- se as alterações fossem para ser efectuadas, descartava-se o original e o clone passava a ser original

No entanto acontece que a quantidade de dados era bastante grande, sendo que uma familia media tem 4 elementos e para cada elemento era necessário muita informação, o conselho do HappyHippyHippo em outro post (sobre outro problema) era não ter todos esses dados em memoria, mas sim guardar os dados de cada formulário.

Sendo que isso resolveu o meu problema com o clone.

Realmente não me lembrei mais deste problema, como esta alteração mudou varias coisas, esqueci me por completo vir dizer que já estava resolvido, e como foi resolvido.

De qualquer forma, obrigado pela ajuda.

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.