TROCKEN - Wiederholen Sie sich nichtCodierung DRY, wie gemeinsame Funktionalität in diesen beiden Objekten zu kombinieren?
ControlSignUp und ControSignIn sind nahezu identisch. Ich habe ein "hier" auf den nur 4 Zeilen kommentiert, die unterschiedlich sind. Wie kann ich diese allgemeine Funktionalität kombinieren?
Eigentlich scheint es offensichtlich .. Ich kann nur in einer einzigen Variablen durch den Konstruktor übergeben ... nur eine Sekunde.
Antwort:
/**
* ControlSign
*/
var ControlSign = function(type)
{
var form_element = document.getElementById(type);
var response_element = document.getElementById(type + '_response');
var text_object = new Text(form_element);
var message_object = new Message(response_element);
this.invoke = function()
{
if(Global.validate_input_on === 1)
{
if(!text_object.checkEmpty())
{
message_object.display('empty');
return false;
}
if(type === 'signup' && !text_object.checkPattern('name'))
{
message_object.display('name');
return false;
}
if(!text_object.checkPattern('email'))
{
message_object.display('email');
return false;
}
if(!text_object.checkPattern('pass'))
{
message_object.display('pass');
return false;
}
}
AjaxNew.repeatUse(ajaxSerialize(form_element) + '&ajax_type=' + type + '_control', function(server_response_text) { ajaxType(server_response_text, response_element, 'respond'); });
}
};
ControlSign.in = function()
{
new ControlSignIn('signin').invoke();
};
ControlSign.up = function()
{
new ControlSignUp('signup').invoke();
};
Eine der Return-Anweisungen ist 'return;' anstatt 'return false' - Bug oder Feature? –
Sie haben vielleicht die Sekunde gewartet, bevor Sie gefragt haben :-) – Bergi
Was soll ich als Kommentar eingeben? Edit: Moment mal, ich hab's! – MarioDS