0

Wie der Titel sagt, habe ich Probleme mit JQuery Unauffällige Validierung in Javascript in einer MVC-Anwendung.Jquery Unobtrusive Validierung nicht in MVC

Was ich getan habe:

Eingänge auf meiner Form wurden mit entsprechenden Regeln gebunden, die JavaScript in meiner benutzerdefinierten geprüft werden:

<input type="text" class="form-control" name="rates_taxes" id="rates_taxes" data-val='true' data-val-ispositive="You must enter a positive value here or 0" data-val-isnumeric="You must enter a numerical value here. (e.g 250000)" required> 

    ... 
    jQuery.validator.addMethod('isnumeric', function (value) { 
     return $.isNumeric(value); 
    }, ''); 

    jQuery.validator.unobtrusive.adapters.add('isnumeric', function (options) { 
     options.rules['isnumeric'] = {}; 
     options.messages['isnumeric'] = options.message; 
    }); 

hier nicht gezeigt, habe ich, dass die isNumeric Methode getestet wird eingegeben, wenn ein Benutzer die Eingabe eingibt oder das Formular absendet.

Das Problem ist die Einreichung des Formulars. Die beiden Ereignisse InvalidHandler und SubmitHandler werden einfach nicht ausgelöst.

Ich habe es mit der Methode auf der JQuery Validation-Site implementiert - die in den Handler als Javascript-Objekt der $("form").validate({ invalidHander: function(e, validator){ ... }); Methode ist vorbei - es ist nicht

jetzt abfeuern hatte ich diesen Ansatz:

 $(document).on("click", "button[type='submit']", function (e) { 
     if ($(e.target).data("customValidate") === true) { 
      e.preventDefault(); 
      var form = $(e.target).parents("form"); 

      $(form).data("validator").settings.submitHandler = function (formhandler) { 
       alert('submit'); 
       formhandler.submit(); 
      }; // <---- 

      $(form).data("validator").settings.invalidHandler = function (e, validator) { 
       alert('error'); 
       for (var i = 0; i < validator.errorList.length; i++) { 
        var element = '#' + validator.errorList[i].element.name; 
        var error = validator.errorList[i].message; 
        if (!error || error === "undefined") { 
         error = "This field is required."; 
        } 
        $(element).prop('title', error); 
        $(element).data('placement', 'right'); 
        $(element).data('toggle', 'tooltip').tooltip('show'); 
       } 
      }; // <---- 

      $(form).validate(); 
     } 
    }); 

Das setzt die ungültigen und gültigen Handler für die Jquery Unobtrusive Validation Engine direkt in den Formulardaten.

Kein Ansatz funktioniert. Ich habe auf einer anderen MVC-Site mit meinem Team gearbeitet, wo dieser Ansatz funktioniert hat, obwohl ich die unauffällige Validierung nicht implementiert habe - der Grund, warum das nicht funktioniert, wie ich oben implementiert habe, entgeht mir.

Irgendwelche Vorschläge, was ich verpasst haben könnte?

+0

Etwas irrelevant - bevor ich diese Ansätze versuchte (was sinnvoll ist, um richtig zu sein), habe ich nur die Fehlerliste für Einträge überprüft. Beim ersten Senden des Formulars, obwohl die Felder fehlerhaft waren, war die Fehlerliste leer. das Formular wurde ein zweites Mal gesendet, es wurde ausgefüllt und die Tooltips im Code angezeigt – Eon

Antwort

0

Einfache Lösung in meinem Fall - e.preventDefault musste entfernt werden.