J'ai une page qui est construite autour d'un wrapper avec une logique très définie. Il y a un bouton Enregistrer en bas du formulaire enveloppé qui ressemble à ceci :
<form>
... my page goes here...
<input id="submitBtnSaveId" type="button" onclick="submitPage('save', 'auto', event)" value="Save">
</form>
Cela ne peut pas changer...
Maintenant, j'écris du javascript dans la page qui est chargée dans "...ma page va ici...". Le code se charge très bien et fonctionne comme prévu. Il effectue un certain travail autour des éléments du formulaire et j'ai même injecté une validation sur la page. C'est là que je suis bloqué. J'essaie d'"intercepter" le onclick et d'empêcher la page d'appeler "submitPage()" si la validation échoue. J'utilise prototype.js, et j'ai donc essayé toutes les variations et combinaisons possibles :
document.observe("dom:loaded", function() {
Element.observe('submitBtnSaveId', 'click', function (e) {
console.log('Noticed a submit taking place... please make it stop!');
//validateForm(e);
Event.stop(e);
e.stopPropagation();
e.cancelBubble = true;
console.log(e);
alert('Stop the default submit!');
return false;
}, false);
});
Rien n'empêche l'appel de "submitPage()" ! L'observation fonctionne réellement et déclenche le message de la console et affiche l'alerte pendant une seconde. Puis le "submitPage()" se déclenche et tout s'arrête. J'ai supprimé le onclick lié au bouton dans Firebug, et ma validation et mon alerte fonctionnent comme prévu, ce qui m'amène à penser que la propagation n'est pas vraiment arrêtée pour le onclick ?
Qu'est-ce que je rate ?