J'ai fait une classe qui gère la charge et soumettre un formulaire html. Voir ci-dessous le codesoumettre formulaire en utilisant mootools
ND.Form = new Class({
//--- Implements options og events.
Implements: [Options, Events],
//--- Options.
options: {
url: '',
injectTo: ''
},
//--- Initialize the class.
initialize: function (panel, options) {
//--- Set options
this.setOptions(options);
this.panel = panel;
this.loadForm();
},
loadForm: function() {
var req = new Request.HTML({
url: this.options.url,
method: 'get',
onSuccess: function (html) {
$(this.options.injectTo).empty();
$(this.options.injectTo).adopt(html);
var formId = $(this.options.injectTo).getFirst('form').get('id');
$(formId).addEvent('submit', function (e) {
e.stop();
this.submitForm(formId);
} .bind(this));
} .bind(this)
}).send();
},
submitForm: function (formId) {
$(formId).set('send', {
onSuccess: function (resp) {
this.panel.loadContent();
if (resp != null) {
$('lbl_error').empty();
$('lbl_error').setStyles({ 'display': 'block', 'color': 'red' }).set('html', resp);
}
}.bind(this),
onFailure: function (resp) {
if (resp != null) {
$('lbl_error').empty();
$('lbl_error').setStyles({ 'display': 'block', 'color': 'red' }).set('html', resp);
}
}
});
$(formId).send();
}
});
Et tout fonctionne très bien, exepté que quand je pousse le bouton d'économiser plus de ceux de la « this.panel.loadContent(); » dans le "submitForm: function (formId)" tire le même nombre de fois que j'ai poussé le bouton, comment puis-je l'empêcher?
/Martin
Eh bien, mon "this.panel.loadContent();" allume encore plusieurs fois quand j'essaie votre suggestion. La première fois que je tape sur le bouton, il charge une fois, la deuxième fois que je tape sur le bouton, il charge deux fois ect. –
Que faire si le formulaire est envoyé sans cliquer sur Envoyer? C'est à dire. si l'utilisateur appuie sur entrer dans une entrée de texte? –