Essas dicas do Haroldo valem ouro, eu penei mto no início (não que ainda não pene) com esse tipo de problema. Uma prática que adotei e que ajudou muito, se for excluir o que você criou anteriormente, procure excluir na ordem inversa de criação, ou seja, a última coisa criada deve ser a primeira a ser excluída.
Ainda assim observo comportamentos inexplicáveis com campos em formulários simples. Ontem mesmo me deparei com um problema que não tinha lógica ao atualizar uma label:
- Dentro de um evento ajax de um campo, após fazer um teste, eu preenchia a label com uma mensagem de alerta, algo como:
{label} = "Mensagem: bla bla bla {campo}".
- Se o teste não fosse positivo, simplesmente alimentava a label com o texto padrão:
{label} = "Mensagem:";
Após ter passado uma vez pelo evento ajax testando com o valor verdadeiro, a mensagem do item 1 era preenchida corretamente, mas, se eu repetisse a operação, forçando falso no teste, ele simplesmente não era capaz de mudar a mensagem para o texto padrão.
Confirmei que estava entrando no teste falso onde atualizava a label com o texto padrão usando uma mensagem ajax… mas o texto da label não atualizava.
Então resolvi, não sei nem pq, mudar o texto padrão para “teste”… E ENTÃO ATUALIZOU!
Como podem ver no exemplo, era um texto simples, sem erros, sem validações, sem concatenações, apenas texto estático.
Para manter o texto padrão que já tinha colocado internamente no componente, apenas adicionei um espaço em branco a mais no final do texto que eu já usava…
{label} = "Mensagem: ";
Se alguém tiver uma explicação lógica pra isso, eu agradeço, pra mim, esse comportamento é errático.