


Zusammenfassung der Übermittlungsmethoden für Validierungs- und Formular-Plug-ins in jquery_javascript-Kenntnissen
Übersicht: In diesem Artikel wird hauptsächlich jquery.validate in Kombination mit jquery.form zur Implementierung von Formularüberprüfungs- und Übermittlungslösungen erläutert.
Methode 1: Über die SubmitHandler-Option von jquery.validate wird die Rückruffunktion ausgeführt, wenn das Formular die Überprüfung besteht. Senden Sie das Formular über jquery.form in dieser Rückruffunktion
Methode 2: Verwenden Sie beforeSubmit von jquery.form, eine Rückruffunktion, die vor dem Absenden des Formulars ausgeführt wird. Wenn diese Funktion „true“ zurückgibt, wird das Formular gesendet. Wenn sie „false“ zurückgibt, wird die Formularübermittlung beendet. Gemäß der Methode valid() des Plug-Ins jquery.validate kann das Formular beim Senden des Formulars über jquery.form überprüft werden.Methode 3: Validieren Sie das Formular über jquery.validate. Der Vorteil dieser Methode besteht darin, dass Sie mehr Kontrolle über die Formularvalidierung haben
Beispiele: Die oben genannten drei Methoden werden im Folgenden anhand von drei Beispielen erläutert
CSS-Stildatei laden
input{ height:25px; line-height:25px; padding-left:4px; } span.checked{ padding: 0px 5px 0px 25px; margin-left: 10px; margin-top: 0px; margin-bottom: 3px; height: 25px; line-height:25px; font-size: 12px; white-space: nowrap; text-align: left; color: #E6594E; background: url("images/acion2.png") no-repeat 3px; /* #FCEAE8 */ } span.unchecked{ padding: 0px 5px 0px 25px; margin-left: 10px; margin-top: 0px; margin-bottom: 3px; height: 23px; line-height:23px; font-size: 12px; border: 1px solid #E6594E; white-space: nowrap; text-align: left; color: #E6594E; background: #FCEAE8 url("images/acion.png") no-repeat 3px; }
Javascript-Datei laden
<script language="JavaScript" type="text/JavaScript" src="js/jQuery1.6.2.js"></script> <script language="JavaScript" type="text/JavaScript" src="js/jquery.form.js"></script> <script language="JavaScript" type="text/JavaScript" src="js/jquery.validate.js"></script> <script language="JavaScript" type="text/JavaScript" src="js/localization/messages_tw.js"></script>
<body><span id="result"></span> <form id='commentForm'> <fieldset> <legend>jquery.validate+jquery.form提交的三种方式</legend> <p> <label for='cusername'>姓名</label><em>*</em> <input id='cusername' name='username' size='25' /> </p> <p> <label for='cemail'>电子邮件</label><em>*</em> <input id='cemail' name='email' size='25' /> </p> <p> <input class='submit' type='submit' value='提交'> </p> </fieldset> </form> </body>
jquery.validate+jquery.form übermittelt den Javascript-Inhalt von Methode 1
<script language="javascript"> function showResponse(responseText,statusText) { if(statusText=='success'){ $("#result").html(responseText); } } $(document).ready(function(){ $('#commentForm').validate({ focusCleanup:true,focusInvalid:false, errorClass: "unchecked", validClass: "checked", errorElement: "span", submitHandler:function(form){ $(form).ajaxSubmit({ type:"post", url:"test_save.php?time="+ (new Date()).getTime(), //beforeSubmit: showRequest, success: showResponse }); }, errorPlacement:function(error,element){ var s=element.parent().find("span[htmlFor='" + element.attr("id") + "']"); if(s!=null){ s.remove(); } error.appendTo(element.parent()); }, success: function(label) { //label.addClass("valid").text("Ok!") label.removeClass("unchecked").addClass("checked"); }, rules:{ username:{required:true,minlength:3}, email:{ required:true } } }); }); </script>
jquery.validate+jquery.form übermittelt den Javascript-Inhalt von Methode 2
<script language="javascript"> function showResponse(responseText,statusText) { if(statusText=='success'){ $("#result").html(responseText); } } function showRequest(formData,jqForm,options){ return $("#commentForm").valid(); } $(document).ready(function(){ $('#commentForm').submit(function(){ $(this).ajaxSubmit({ type:"post", url:"test_save.php?time="+ (new Date()).getTime(), beforeSubmit:showRequest, success:showResponse }); return false; //此处必须返回false,阻止常规的form提交 }); $('#commentForm').validate({ focusCleanup:true,focusInvalid:false, errorClass: "unchecked", validClass: "checked", errorElement: "span", errorPlacement:function(error,element){ var s=element.parent().find("span[htmlFor='" + element.attr("id") + "']"); if(s!=null){ s.remove(); } error.appendTo(element.parent()); }, success: function(label) { //label.addClass("valid").text("Ok!") label.removeClass("unchecked").addClass("checked"); }, rules:{ username:{required:true,minlength:3}, email:{ required:true } } }); }); </script>
jquery.validate+jquery.form übermittelt den Javascript-Inhalt von Methode 3
<script language="javascript"> var options={ focusCleanup:true,focusInvalid:false, errorClass: "unchecked", validClass: "checked", errorElement: "span", errorPlacement:function(error,element){ var s=element.parent().find("span[htmlFor='" + element.attr("id") + "']"); if(s!=null){ s.remove(); } error.appendTo(element.parent()); }, success: function(label) { //label.addClass("valid").text("Ok!") label.removeClass("unchecked").addClass("checked"); }, rules:{ username:{required:true,minlength:3}, email:{ required:true } } }; function showResponse(responseText,statusText) { if(statusText=='success'){ $("#result").html(responseText); } } function showRequest(formData,jqForm,options){ return $("#commentForm").valid(); } $(document).ready(function(){ validator=$('#commentForm').validate(options); $("#reset").click(function(){ validator.resetForm(); }); $("button").click(function(){ validator.form(); }); $('#commentForm').submit(function(){ $(this).ajaxSubmit({ type:"post", url:"test_save.php?time="+ (new Date()).getTime(), beforeSubmit:showRequest, success:showResponse }); return false; //此处必须返回false,阻止常规的form提交 }); }); </script>
DEMO-Quellcode: Einige Fragen
1. Tatsächlich wurde dieses Problem entdeckt, als ich gestern Abend verwendete Nachricht. Heute habe ich jedoch festgestellt, dass das Problem nicht so einfach ist. Bei Verwendung von muss das Eingabefeld „Name“ nur drei Zeichen lang sein, um die Überprüfung als bestanden zu betrachten – nach Eingabe des ersten Zeichens. Bei den zweiten Zeichen ist die Fehleranzeige normal. Wenn das dritte Zeichen eingegeben wird, verschwindet die Fehleranzeige und es wird ein „Komma“-Bild angezeigt, das anzeigt, dass die Überprüfung bestanden wurde. Bisher scheint alles gut zu funktionieren, aber wenn Sie weiterhin Zeichen eingeben, etwa das vierte Zeichen, das fünfte Zeichen ... tritt das Problem auf. Wie unten gezeigt:
Die Lösung dieses Problems ist ziemlich kompliziert. Hier ist eine Liste des Prozesses. Und geben Sie am Ende eine Lösung
Zuallererst liegt es daran, dass ich gestern die Fehlermeldung überprüft und auf den Code geachtet habe, der die Fehlermeldung eingefügt hat. Ich habe zu errorPlacement einen Satz hinzugefügt: alarm(element.parent().html());
errorPlacement:function(error,element){ alert(element.parent().html()); var s=element.parent().find("span[htmlFor='" + element.attr("id") + "']"); if(s!=null){ s.remove(); } error.appendTo(element.parent()); },
Wenn Sie das erste Zeichen eingeben, erhalten Sie etwa das Bild unten
1. Unabhängig davon, ob die Überprüfung fehlschlägt oder erfolgreich ist, wird errorPlacement:function(...)
aufgerufen
2. s.remove() funktioniert nicht.Da ich beim Schreiben dieses Artikels anstelle von verwendet habe, lautet der Popup-Inhalt htmlFor="cusername" anstelle von for="cusername", wie in der folgenden Abbildung gezeigt:
var s=element.parent().find("span[htmlFor='" + element.attr("id") + "']"); if(s!=null){ s.remove(); }
errorPlacement:function(error,element){ alert(element.parent().html()); var s=element.parent().find("span[for='" + element.attr("id") + "']"); if(s!=null){ s.remove(); } error.appendTo(element.parent()); },
问题似乎解决了。但上面提到,不管验证成功或失败,都会调用errorPlacement:function(...),那可以在这里判断有没有错误,如果有错误,则显示。防止已经验证成功的情况下仍会调用。这样就不会寻找span的for属性值是否为当前控件的name名称了(例子中是for="cusername")。改进的代码如下:
errorPlacement:function(error,element){ if(error.html()!=''){ error.appendTo(element.parent()); } },
虽然解决问题,但是在chrome、firefox下仍有问题。了解这个问题的现象,可以用firefox或chrome测试一下——焦点离开输入框后,无法验证,只有点击“提交”按钮后才可以验证——这个问题的解决方案目前还没有深入下去。但是有解决的办法是,将上面的jquery1.6.2换成jquery1.3.2或jquery1.4(其它的jquery版本未测试,可能是低于jquery1.6.2的版本都可以)即可解决这个问题。
建议:
1、使用jquery1.3.2版本,这样可以节省很多时间来解决兼容方面的问题。
更多:
本例子中的jquery.validate,解决了remote远程验证只返回true or false的局限。可以返回代码及出错的提示信息,更好的人性化需求。使用方法就在这介绍一下
增加以下函数
function GetRemoteInfo(postUrl,data){ var remote = { type: "POST", async: false, url: postUrl, dataType: "xml", data: data, dataFilter: function(dataXML) { var result = new Object(); result.Result = jQuery(dataXML).find("Result").text(); result.Msg = jQuery(dataXML).find("Msg").text(); //alert(result.Result); if (result.Result == "-1") { result.Result = false; return result; }else{ result.Result = result.Result == "1" ? true : false; return result; } } }; return remote; }
$(document).ready(function(){ var dataInfo ={email:function(){return $("#cemail").val();}}; var remoteInfo = GetRemoteInfo('check-email.php?time='+(new Date()).getTime(),dataInfo); $('#commentForm').validate({ rules:{ username:{ required:true, minlength:3 }, email:{ required:true, remote:remoteInfo } } }); .... });
check-email.php返回的内容为xml格式,格式如下
<?php header("Content-Type:text/xml"); echo '<?'.'xml version="1.0" encoding="utf-8"'.' ?>'; ?> <AjaxClass> <Msg>用户名格式不正确,用户名必须包含testa,请重新输入!</Msg> <Result>0</Result> </AjaxClass>
result值为0,返回的是false,表示验证失败;result值为1,返回的是true,表示验证成功

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen



In Artikel werden JavaScript -Bibliotheken erstellt, veröffentlicht und aufrechterhalten und konzentriert sich auf Planung, Entwicklung, Testen, Dokumentation und Werbestrategien.

In dem Artikel werden Strategien zur Optimierung der JavaScript -Leistung in Browsern erörtert, wobei der Schwerpunkt auf die Reduzierung der Ausführungszeit und die Minimierung der Auswirkungen auf die Lastgeschwindigkeit der Seite wird.

Häufig gestellte Fragen und Lösungen für das Ticket-Ticket-Ticket-Ticket in Front-End im Front-End-Entwicklungsdruck ist der Ticketdruck eine häufige Voraussetzung. Viele Entwickler implementieren jedoch ...

In dem Artikel werden effektives JavaScript -Debuggen mithilfe von Browser -Entwickler -Tools, der Schwerpunkt auf dem Festlegen von Haltepunkten, der Konsole und der Analyse der Leistung erörtert.

Es gibt kein absolutes Gehalt für Python- und JavaScript -Entwickler, je nach Fähigkeiten und Branchenbedürfnissen. 1. Python kann mehr in Datenwissenschaft und maschinellem Lernen bezahlt werden. 2. JavaScript hat eine große Nachfrage in der Entwicklung von Front-End- und Full-Stack-Entwicklung, und sein Gehalt ist auch beträchtlich. 3. Einflussfaktoren umfassen Erfahrung, geografische Standort, Unternehmensgröße und spezifische Fähigkeiten.

In dem Artikel wird erläutert, wie Quellkarten zum Debuggen von JavaScript verwendet werden, indem er auf den ursprünglichen Code zurückgegeben wird. Es wird erläutert, dass Quellenkarten aktiviert, Breakpoints eingestellt und Tools wie Chrome Devtools und WebPack verwendet werden.

Eingehende Diskussion der Ursachen des Unterschieds in der Konsole.log-Ausgabe. In diesem Artikel wird die Unterschiede in den Ausgabeergebnissen der Konsolenfunktion in einem Code analysiert und die Gründe dafür erläutert. � ...

Sobald Sie das Typscript-Tutorial für Einstiegsklasse gemeistert haben, sollten Sie in der Lage sein, Ihren eigenen Code in eine IDE zu schreiben, die TypeScript unterstützt und in JavaScript zusammenfasst. Dieses Tutorial wird in verschiedenen Datentypen in TypeScript eingetaucht. JavaScript hat sieben Datentypen: NULL, UNDEFINED, BOOLEAN, NUMMER, STRING, SYMBOL (durch ES6 eingeführt) und Objekt. TypeScript definiert mehr Typen auf dieser Grundlage, und dieses Tutorial wird alle ausführlich behandelt. Null -Datentyp Wie JavaScript, null in TypeScript
