2017-10-24 1 views
0

Ich verwende Jquery-Validierung, aber ich vermute, dass der Code nicht mit den Best Practices von OOP übereinstimmt.Gibt es eine Möglichkeit, die Validierung von der Logik zu trennen, wenn jquery-validator verwendet wird?

In meiner Seite verwende ich eine Schaltfläche, die ein Javascript aufruft.

Beispiel mit sendInfo Funktion:

<script src="../bower_components/jquery-validation/dist/jquery.validate.min.js"></script>

<button type="button" onclick="sendInfo('/rest/info','123');">Infos</button>

Aber die Form zu überprüfen, muss ich den Anruf $ verwenden ('... myform ...') validieren

.

Hier ein Beispiel:

function sendInfo(sUrl, sParams){ 
 

 
    $("form[name='infoForm']").validate({ 
 

 
     rules: { 
 
     }, 
 
     messages: { 
 
     }, 
 
     submitHandler: function(form) { 
 
     $.ajax({ 
 
      url: sURL, 
 
      data: sParams, 
 
      success: function(response) { 
 
      } 
 
     }); 
 
     } 
 

 
    }); 
 

 
}

Gibt es eine Möglichkeit, die Logik für Validierungen vom Aufruf nach $ .ajax() aufzuteilen?

Ich möchte die Codes in separaten Dateien abgelegt werden, etwa so:

Info-validations.js

function infoValidations(){ 
 
    $("form[name='infoForm']").validate({ 
 
     rules: { 
 
     }, 
 
     messages: { 
 
     }, 
 
     submitHandler: function(form) { 
 
     } 
 
    }); 
 
}

info.js

function sendInfo(sUrl, sParams){ 
 
    $.ajax({ 
 
     url: sURL, 
 
     data: sParams, 
 
     success: function(response) { 
 
     } 
 
    }); 
 
}

Antwort

0

denke ich, es wäre gut, sie in der gleichen Datei zu halten. Sie können sie jedoch auf mehrere Funktionen aufteilen. Die ideale Lösung wäre so etwas wie:

function handleFormSubmit(sUrl, sParams) { 
    if (validateForm(sParams)) { 
    sendRequest(sUrls, sParams); 
    } 
} 

function validateForm(sParams) {} 

function sendRequest(sUrl, sParams) {} 

Aber es ist nicht möglich, mit dem jQuery-Plugin bestätigen, so würde ich die folgende (Sie müssen es an Ihre Bedürfnisse anzupassen, aber ich glaube, Sie erhalten den Punkt) vorschlagen .

function sendInfo(sParams){ 
    $("form[name='infoForm']").validate({ 
    rules: { }, 
    messages: { }, 
    submitHandler: sendRequest 
    }); 
} 

// Use the form data from the validator 
function sendRequest(form) { 
    $.ajax({ 
    /* 
    * You can keep the URL in a hidden field in the form instead, 
    * to get it more semantic correct (even though the action 
    * property in the form would be the correct) 
    */ 

    url: form.sURL, 
    data: form, 
    success: handleSucces 
    }); 
} 

function handleSuccess(response) { } 

Btw ist dies in keiner Weise OOP :-)

Verwandte Themen