Problemas com javascript listeners

10 respostas
luistiagos

tenho o seguinte javascript:

addListener(window, 'load', function(){
                        addListener(document.getElementById('lnkSubmeter'),'click',
                            function() {
                                 return false;
                            })
                    });

este evento deve interceptar link lnkSubmeter de chamar a funcao para submeter a pagina
porem isto não funciona… o que á de errado?

10 Respostas

luistiagos

mais alguem?

renanpto

Se tiver usando prototype… pode fazer assim:

Event.observe(element, eventName, handler)

referencia http://www.prototypejs.org/api/event/observe

luistiagos

ja tentei:

Event.observe(window, 'load', function() {
        Event.observe('formulario', 'submit', function(){alert("tst!"); return false;});
    });

ele da submit de qualquer jeito…
não adianta o return false…

renanpto

luistiagos:
ja tentei:

Event.observe(window, 'load', function() {
        Event.observe('formulario', 'submit', function(){alert("tst!"); return false;});
    });

ele da submit de qualquer jeito…
não adianta o return false…

Agora que percebi o realmente voce quer fazer… :shock:

SE sua idéia é usar os listener para controlar quando o form pode ser invocado, voce tem que usar outra estratégia Auhuahua…

Pois a funcao setada como listener é invocada quando o evento é gerado, entao não há como cancelar o submit nesse ponto.

flw

rodrigo_corinthians
Coloca uma function no onsubmit do form que funciona, ficaria mais ou menos assim...
<script>
function doSubmit() {
   if(1 > 0){// Aqui vai sua regra.
      return false;
   }
   return true;
}
</script>

<form onsubmit="return doSubmit();"></form>
luistiagos
rodrigo_corinthians:
Coloca uma function no onsubmit do form que funciona, ficaria mais ou menos assim...
<script>
function doSubmit() {
   if(1 > 0){// Aqui vai sua regra.
      return false;
   }
   return true;
}
</script>

<form onsubmit="return doSubmit();"></form>

vc não entendeu... quero que minha regra esteja dentro da taglib q vou criar e não dentro da jsp...

ex: vou criar uma taglib para campos cnpj ou cpf:
<myTag:cnpj name="cnpj" notnull="true" />

quero que o js de validação do cnpj esteja dentro da taglib e não dentro da jsp... porem quero que este js de validação impeça o submit da pagina caso o cnpj estiver errado... sem o cara precisar inserir qualquer js de validação referente ao cnpj... apenas coloque a tag e pronto... a regra de negocio da validação estara encapsulada dentro da propria tag...

renanpto:
luistiagos:
ja tentei:
Event.observe(window, 'load', function() {
        Event.observe('formulario', 'submit', function(){alert("tst!"); return false;});
    });

ele da submit de qualquer jeito...
não adianta o return false...

Agora que percebi o realmente voce quer fazer... :shock:

SE sua idéia é usar os listener para controlar quando o form pode ser invocado, voce tem que usar outra estratégia Auhuahua...

Pois a funcao setada como listener é invocada quando o evento é gerado, entao não há como cancelar o submit nesse ponto.

flw

É exatamente isto... porem o problema é que estrategia usar... esta é minha duvida...

renanpto

Entao coloque na sua tag um script no campo cnpj para controlar se o campo foi preenchido e o se o cnpj for valido, habilite o form pra submit…
Voce terá que criar/apontar para os scripts dentro da tag… e pode passar o id do form que deverá ser usado através da tag, ficando assim seguindo teu fonte ai:

<mytag:cnpj name="cnpj" notnull="true" form="idSeuForm"/>

boa sorte…

luistiagos

mas não quero interação com a jsp externa… apenas a tag controla td… queria tipo um listener que qdo o usuario der submit ela interceptaria e cancelaria o submit dando uma msg de dados invalidos caso esteja errado… porem quero usar esta tag em varias jsps sem ter que escrever uma linha sequer de codigo nelas… apenas colocar a tag e pronto…

Leozin

E se tu colocar assim:

document.getElementById('lnkSubmeter').addEventListener('click', function() { return false; }, false)

renanpto

Então, se voce implementar a logica para escrever/apontar pros scripts dentro da tag isso irá funcionar.

Esse listener que comentou, voce adiciona atraves do script dentro da tag.

boa sorte

Criado 29 de janeiro de 2010
Ultima resposta 3 de fev. de 2010
Respostas 10
Participantes 4