br Posted April 26, 2013 at 04:49 AM Report #504873 Posted April 26, 2013 at 04:49 AM (edited) boas estou a desenvolver uma app adiciono em com um botao um no campo no form, mas sempre que carrego nesse botao ele faz-me refresh da pagina. como posso para isso? $(document).ready(function(){ $("#btadd").click(function(){ $("ol").append("<li>Date <input type='text' id=datepicker' /> Hour <input type='text'/></li>"); }); }); Edited April 26, 2013 at 09:46 AM by brunoais geshi
HappyHippyHippo Posted April 26, 2013 at 07:48 AM Report #504875 Posted April 26, 2013 at 07:48 AM (edited) se faz refresh da página é porque o elemento com o id "btadd" será um anchor com o href com o valor de "#" ou um input do tipo "submit" de um form com o atributo action com o valor de "#". tanto um caso como outro, a solução é fazer o retorno de false da função descrita Edited April 26, 2013 at 07:50 AM by HappyHippyHippo IRC : sim, é algo que ainda existe >> #p@p Portugol Plus
br Posted April 26, 2013 at 08:10 AM Author Report #504877 Posted April 26, 2013 at 08:10 AM (edited) muito obrigado. exacto o return false resolveu. $(document).ready(function(){ $("#btadd").click(function(){ $("ol").append("<table>\n\ <tr><td><label>Date</label><input type='text' id='datepicker' class='text ui-widget-content ui-corner-all'/></td>\n\ <td><label>Hour</label><input type='text' class='text ui-widget-content ui-corner-all'/></td>\n\ <td><button id='btremove' class='ui-button ui-widget ui-state-default ui-corner-all ui-button-text-only'><img src='ico/delete.png'></button></td></tr>\n\ </table>"); return false; }); }); mas agora datepicker nao funciona nos novos. como posso resolver? Edited April 26, 2013 at 03:35 PM by yoda
HappyHippyHippo Posted April 26, 2013 at 08:15 AM Report #504879 Posted April 26, 2013 at 08:15 AM não funciona nos "novos" (e não nos outros) porque não os inicializaste após a sua criação ... IRC : sim, é algo que ainda existe >> #p@p Portugol Plus
br Posted April 26, 2013 at 08:17 AM Author Report #504880 Posted April 26, 2013 at 08:17 AM so apenas do primeiro ja foi criado no form, nos novos nao funciona. como assim inicializar apos a criaçao? desculpa mas sou muito verde em jquery, é a primeira vez que estou a olhar para isto
HappyHippyHippo Posted April 26, 2013 at 08:39 AM Report #504882 Posted April 26, 2013 at 08:39 AM (edited) pensa assim : como e quando é que inicializas o datepicker ? Edited April 26, 2013 at 08:39 AM by HappyHippyHippo IRC : sim, é algo que ainda existe >> #p@p Portugol Plus
br Posted April 26, 2013 at 08:47 AM Author Report #504886 Posted April 26, 2013 at 08:47 AM (edited) acrescentei uma funçao com datepicker no inicio. $(document).ready(function(){ $("#btadd").click(function(){ $("ol").append("<table>\n\\n\ <tr><td><label>Date</label><input type='text' id='datepicker' class='text ui-widget-content ui-corner-all'/></td>\n\ <td><label>Hour</label><input type='text' class='text ui-widget-content ui-corner-all'/></td>\n\ <td><button id='btremove' class='ui-button ui-widget ui-state-default ui-corner-all ui-button-text-only'><img src='ico/delete.png'></button></td></tr>\n\ </table>"); return false; }); $("#btremove").click(function(){ $('#btremove').closest('ol').remove(); return false; }); }); $(function() { $( "#datepicker" ).datepicker(); }); nao e assim a maneira correcta? e mesmo o remover tambem nao funciona, mas funciona no primeiro criado fora desta funçao Edited April 26, 2013 at 03:35 PM by yoda
HappyHippyHippo Posted April 26, 2013 at 09:23 AM Report #504902 Posted April 26, 2013 at 09:23 AM 1º - id's são para ser únicos !!! 2º - o que estás a fazer na inicialização é associar a plugin datepicker ao elemento com o id datepicker (se tiveres mais do que um o resultado é impossivel determinar) 3º - não o estás a fazer o processo anterior ao elemento criado na acção click IRC : sim, é algo que ainda existe >> #p@p Portugol Plus
br Posted April 26, 2013 at 09:27 AM Author Report #504903 Posted April 26, 2013 at 09:27 AM sim estou a entender o que estas a dizer. entao vou ter que criar um novo id para cada datepicker? e o mesmo para o click do remover como posso fazer isso?
HappyHippyHippo Posted April 26, 2013 at 09:30 AM Report #504904 Posted April 26, 2013 at 09:30 AM de várias maneiras ... mas a mais simples pode ser usar uma variável global com o id a ser atribuido IRC : sim, é algo que ainda existe >> #p@p Portugol Plus
KTachyon Posted April 26, 2013 at 12:33 PM Report #504920 Posted April 26, 2013 at 12:33 PM (edited) Antes de mais, um pouco offtopic: A fazeres append de strings de código HTML o teu código vai ficar uma salganhada enorme. A minha sugestão é colocares esse código em ficheiros HTML separados. Se utilizares bibliotecas como o underscore e o backbone ficas com o código bastante mais limpo e fácil de manter. Relativamente à questão colocada, basta utilizar o preventDefault(). Edited April 26, 2013 at 12:34 PM by KTachyon “There are two ways of constructing a software design: One way is to make it so simple that there are obviously no deficiencies, and the other way is to make it so complicated that there are no obvious deficiencies. The first method is far more difficult.” -- Tony Hoare
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