Versuchen Sie, eine benutzerdefinierte Validierung Nachricht mit jQuery-Remote
Habe ich die ein Formular mit den folgenden Validierung setup:
$('#form').validate({
onfocusout: false,
onkeyup: false,
onclick: false,
success: function (){
$('#username').addClass('input-validation-confirmation');
}
});
$('#username').rules("add", {
onfocusout: false,
onkeyup: false,
required: true,
email: true,
remote: {
url: function,
type: 'GET',
dataType: 'json',
traditional: true,
data: {
username: function () {
return $('#username').val();
}
},
dataFilter: function (responseString) {
var response = jQuery.parseJSON(responseString);
currentMessage = response.Message;
if (response.State == 0) {
currentMessage = currentMessage + 0;
return false;
}
return 'true';
},
beforeSend: function (response) {
showLoadingIndicator($('#username'));
},
complete: function () {
hideLoadingIndicator($('#username'));
}
}
});
Was dieser versucht zu tun ist, verwenden Sie die gleichen Validierungs-Elemente (in Bezug auf die Arbeit mit einigen anderen framework) zur Anzeige von Fehler-und Erfolgs-Methoden.
Mein problem ist, dass der Erfolg der Methode meine Regel gefeuert wird, BEVOR der remote-überprüfung abgeschlossen wurde. Ich habe versucht, die Nachricht mehrere Möglichkeiten, aber der benutzerdefinierte Nachrichten-parameter scheint nicht aufgerufen zu werden, auf die Validierung Erfolg.
Kennt jemand andere Methoden zu verwenden, die die Validierung Fehler Feld für Erfolgs-und Fehlermeldungen bei Verwendung einer Mischung von fern-und Muster-Validierungs-Regeln?
Edit:
Jetzt verstehe ich, ich hatte erwartet, ein Erfolg der event zur falschen Zeit. Ich brauche ein Ereignis, das ausgelöst wird, sobald die Validierung abgeschlossen ist (nicht eingereicht). Gibt es eine solche Veranstaltung?
- Ich nehme an, Sie sind mit jqueryvalidation.org? Wenn dem so ist, wie es aussieht ist die remote-Methode ist auf einen pro-Bereich Grundlage, und sollte ein Kind das Feld, das wird aus der Ferne ausgelöst überprüfen . . .
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ihren code...
Hier das problem, dass
onfocusout
,onkeyup
undsuccess
sind nicht "Regeln". Nur die einzelnen "Regeln" und diemessages
option kann in der.rules('add')
Methode.Finden Sie in der Dokumentation für
.rules()
Methode: http://jqueryvalidation.org/rulesonfocusout
,onkeyup
undsuccess
sind "Optionen", nur gehen Sie in der.validate()
- Methode, die nur noch an der<form>
element.Soweit eine "custom" - Meldung für
remote
: Nach den docs, diese Fehlermeldung wird automatisch der Nachricht zurückgegeben, die von Ihrem server... es gibt kein spezielles setup.BEARBEITEN als pro-Kommentare und aktualisierte OP:
Code:
Du sagtest, "immer Noch, mit aktualisierten code (siehe oben) sehe ich nie den Erfolg der Veranstaltung."
Sie deaktiviert habe, alle Ereignisse auf diesem Formular. Das einzige Ereignis, das Links für das auslösen der Validierung auf dieses Feld, wenn der submit-button geklickt wird. Genau wenn Sie erwarten, zu "sehen"
success
Feuer aus?DEMO: http://jsfiddle.net/xMhvT/
In anderen Worten,
submit
ist die einzige Veranstaltung, Links zum auslösen der Validierung testen, wenn Sie deaktiviert haben, alle anderen Veranstaltungen.BEARBEITEN, basierend auf einem anderen OP-aktualisieren:
success
ist nicht ein "event". Ein "Ereignis" ist einclick
,blur
,keyup
usw. (onkeyup
,onfocusout
undonclick
sind Optionen, die Steuern, die Veranstaltungen für dieses plugin)success
ist eine "callback-Funktion". Eine "callback-Funktion" ist das, was passiert auf der Veranstaltung.• Wenn Sie eine "callback-Funktion", feuert jedes mal, wenn ein Feld Validierung weiterleitet, dann können Sie
success
.• Wenn Sie eine "callback-Funktion", die ausgelöst wird, wenn die Formular-Validierung weiterleitet, dann können Sie
submitHandler
. Allerdings ist dies auch, wenn das Formular abgeschickt wird.• Wenn Sie möchten, um zu "testen", die gesamte form oder ein einzelnes Feld, um zu sehen, wenn es gültig ist, ohne, dass die form, die Sie verwenden können, die
.valid()
"Methode".Dieser Methode wird dem Feuer der Prüfung (die Meldung) und geben einen booleschen Wert zurück.
DEMO: http://jsfiddle.net/xMhvT/1/
Finden Sie unter: http://jqueryvalidation.org/valid/
.validate()
.success
ist auch Teil der Kern-Funktionalität des plugins. Wenn das plugin in Betrieb ist,success
wird immer noch gefeuert werden, ob Sie deklariert haben oder nicht. Ansonsten, ich weiß nicht, wie sonst zu helfen, Sie anderen als zu zeigen, der richtige Weg, um dieses plugin verwenden und seine Methoden.success
innerhalb derrules()
Methode völlig unterbricht das plugin. Es ist das brennen beim laden der Seite " und wenn die Felder sind ungültig: jsfiddle.net/9AfLasuccess
Feuer erst nach dem submit-button geklickt wird... dann werden die Daten gesendet und die Seite bereits neu geladen/umgeleitet. Siehe: jsfiddle.net/xMhvTsubmit
Veranstaltung! "Tab aus" feuert dieonfocusout
event... wennonfocusout
deaktiviert ist, berühren tut sich nichts. Die einzige Art, wie ich dieses Beispiel so lösen Sie eine überprüfung, indem Sie auf den submit-button: jsfiddle.net/xMhvTremote
Sie nicht wollen, dass es brennen Validierung auf jeden Tastendruck.Verwenden Sie die
remote
,dataFilter
undmessages
Parameter wie folgt:Bin ich zu spät um diese Frage zu beantworten, aber ich denke, dass es anderen helfen kann:
in php müssen nur fügen Sie den folgenden
- und in deiner js-code schreiben, der followiing:
$(function(){
});