Funktionsaufruf auslagern?
heinetz
- javascript
- jquery
0 Jörg Reinholz0 1unitedpower0 heinetz0 henman0 Jörg Reinholz
Hallo Forum,
ich weiss nicht, wie ich das anders nennen soll. Daher versuche ich's direkt anhand des Codes zu beschreiben.
var validator = $("form").validate({
submitHandler: function(form) {
$(form).ajaxSubmit({
beforeSubmit: function(arr, $form, options){
$(':input', $(form).addClass('submit'))
.attr('disabled', true);
}
});
},
});
Ich möchte einen Teil auslagern, um ihn wieder zu verwenden …
Das war mein erster Versuch:
var options = {
submitHandler: function(form) {
$(form).ajaxSubmit({
beforeSubmit: function(arr, $form, options){
$(':input', $(form).addClass('submit'))
.attr('disabled', true);
}
});
},
};
var validator = $("form").validate(options);
Das ging nicht, also habe ich versucht, mich ganz leise da ranzutasten:
var myfunction = function(arr, $form, options){
$(':input', $(form).addClass('submit'))
.attr('disabled', true);
};
var validator = $("form").validate({
submitHandler: function(form) {
$(form).ajaxSubmit({
beforeSubmit: myfunction(arr, $form, options)
});
},
});
Das Problem scheint zu sein, dass in myfunction die Argumente arr, $form, options nicht ankommen.
Was mache ich falsch?
1000Dank für Tipps und
beste gruesse, heinetz
Moin!
Das Problem scheint zu sein, dass in myfunction die Argumente arr, $form, options nicht ankommen.
Notiere:
myfunction(a, b, c) {
alert(a);
alert(b);
alert(c);
}
(oder ersetze alert
durch console.log
)
und schon musst Du Dich auf den An-Schein nicht mehr verlassen.
Jörg Reinholz
var options = { submitHandler: function(form) { $(form).ajaxSubmit({ beforeSubmit: function(arr, $form, options){ $(':input', $(form).addClass('submit')) .attr('disabled', true); } }); }, }; var validator = $("form").validate(options);
Das ging nicht, also habe ich versucht, mich ganz leise da ranzutasten:
Dieser erste Versuch macht auf mich einen korrekten Eindruck, was funktionierte denn daran nicht? Gab es eine Fehlermeldung? Rantasten ist schon Mal eine gute Idee, aber besser methodisch mit Step Through Debugging als mit Trial and Error.
var myfunction = function(arr, $form, options){ $(':input', $(form).addClass('submit')) .attr('disabled', true); }; var validator = $("form").validate({ submitHandler: function(form) { $(form).ajaxSubmit({ beforeSubmit: myfunction(arr, $form, options) }); }, });
Das Problem scheint zu sein, dass in myfunction die Argumente arr, $form, options nicht ankommen.
Was mache ich falsch?
Du rufst die Funktion myfunction
auf eigene Faust auf anstatt sie als Callback-Funktion zu registrieren und sie dann automatisch von jQuery aufrufen zu lassen.
Was ist das eigentlich für ein Plugin, dass die Methoden validate
und ajaxSubmit
zur Verfügung stellt?
Verstanden habe ich nicht, was Ihr mir sagen wolltet.
Aber ich hab's selbst gefunden:
var myfunction = function(arr, $form, options){
$(':input', $(form).addClass('submit'))
.attr('disabled', true);
};
var validator = $("form").validate({
submitHandler: function(form) {
$(form).ajaxSubmit({
beforeSubmit: myfunction
});
},
});
gruss, heinetz
Servus heinetz,
$(':input', $(form).addClass('submit')).attr('disabled', true);
Darf ich fragen, was dieses Konstrukt genau tut? Es sieht meiner Ansicht nach etwas abenteuerlich aus. Außerdem verstehe ich es nicht ganz.
ciao
Moin!
Verstanden habe ich nicht, was Ihr mir sagen wolltet.
Wenn Du glaubts, dass Du einer Funktion womöglich nicht die richtigen Werte übergibst, dann rate nicht herum, sondern schreibe Dir einfach eine "Fake-Funktion", welche die übergebenen Werte ausgibt.
Jörg Reinholz