Jump to content

Recommended Posts

Posted (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 by brunoais
geshi
Posted (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 by HappyHippyHippo
IRC : sim, é algo que ainda existe >> #p@p
Posted (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 by yoda
Posted

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

Posted (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 by yoda
Posted

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
Posted

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?

Posted (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 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

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.