2016-05-24 13 views
2

Ist jemand anderes dieses Problem? Remote-Validierung auf unauffällig in mvc ist um einen Schritt zurück.Remote-Validierung ist hinter einem Schritt in MV

Ich versuche ein Feld zu validieren und wenn das Feld gültig ist, erscheint ein Häkchen daneben. Alles funktioniert, außer für die Fernbedienung.

Bitte siehe Bild (gif) beigefügt. In diesem GIF habe ich zwei Formen mit einem Unschärfe-Listener. Ich überprüfe, ob es gültig/ungültig ist. Wenn das Feld gültig ist, erscheint das Häkchen sonst, sollte verschwinden.

Ich habe es funktioniert für Bestätigung E-Mail, aber nicht die "Field Two Remote-Validierung". Das Häkchen verschwindet, sobald ich fokussiere und dann verwische.

Wer hat das noch erlebt? Wenn ich ein Reverse tun welches ich die E-Mail-Bestätigung zuerst eingeben, erhalte ich das gleiche Problem

Code, um das Häkchen Show zu machen:

$.fn.addCheckIconTextBox = function (options) { 
    var settings = $.extend({ 
     // These are the defaults. 
     id: "#" + $(this).attr('id') 
    }, options); 
    if ($(settings.id).length > 0) { 
     $(settings.id).blur(function (e) { 
      console.log("isvalid " + $('form').validate().element(settings.id)); 
      if ($(settings.id).val() !== '') { 
       if ($(settings.id).hasClass('input-validation-error')) { 
        $(settings.id).next('.helper').attr('class', 'ico helper'); 
       } else { 
        $(settings.id).next('.helper').attr('class', 'ico helper pass'); 
       } 
      } else { 
       $(settings.id).next('.helper').attr('class', 'ico helper'); 
      } 
     }); 
    } 
}; 

enter image description here

+0

Sie sollten 'if ($ (settings.id) .valid())' überprüfen, nicht wenn die Klasse existiert oder nicht. Dies kann passieren, weil ein 'RemoteAttribute' einen Ajax (async) -Aufruf durchführt und prüft, ob die Klasse existiert, bevor der Ajax abgeschlossen wurde. –

+0

vergessen zu erwähnen. Ich habe das auch versucht. gleicher Fehler. Der Grund, warum ich nach der Klasse suche, weil ich mich richtig verhält. Das bedeutet, dass der rote Rand, der den Fehler hervorhebt, korrekt ist. Jquery fügt unauffällig diese Klasse hinzu und dann dekorieren wir diese Klasse. 'if ($ (settings.id) .val()! == '') { if (! $ (settings.id) .valid()) { // Häkchen entfernen } else { // Häkchen hinzufügen } } else { // Entfernen Sie das Häkchen } ' –

+0

Korrektur. es ist jquery validate, das die Klasse nicht jquery unaufdringlich hinzufügt. Ich denke, das gibt mir einen Hinweis, wie ich das beheben kann. Ich brauche eine Art Rückruf –

Antwort

1

Antwort basiert auf: Trouble Attaching Call Back to Unobtrusive Validation Show Error

/**add/remove form icon when valid/invalid only when svg.helper is beside it**/ 
v.settings.highlight = function (element, errorClass, validClass) { 
    var elId = $(element).attr('id'); 
    var checkIconEl = $('#' + elId).next('.helper'); 
    checkIconEl.attr('class', 'ico helper'); 
    originalHighlight.call(v, element, errorClass, validClass); 
} 
v.settings.unhighlight = function (element, errorClass, validClass) { 
    var elId = $(element).attr('id'); 
    var checkIconEl = $('#' + elId).next('.helper'); 
    checkIconEl.attr('class', 'ico helper pass'); 
    originalUnHighlight.call(v, element, errorClass, validClass); 
}