Les soumissions de formulaires traditionnelles se font toutes sous la forme de sauts de page, mais la soumission ajax est plus populaire maintenant. Donc, si vous souhaitez bénéficier de la simplicité de la soumission de formulaire et de l'effet d'ajax, existe-t-il une solution ?
Comment utiliser
Deux façons d'utiliser :
La première façon
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <script src="js/jquery-1.9.1.min.js"></script> <script src="js/jquery-form.js"></script> <script> // 使用ajaxForm $(function(){ $("#myForm").ajaxForm(function(){ $("#output1").html("提交成功").show(); }) }) </script> </head> <body> <form id="myForm"> <input type="text" name="username"> <input type="text" name="password"> <input type="submit" value="提交"> <div id="output1" style="display: none"></div> </form> </body> </html>
La deuxième méthode
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <script src="js/jquery-1.9.1.min.js"></script> <script src="js/jquery-form.js"></script> <script> $(function(){ //方式二 与方式一效果一样 $("#myForm").submit(function(){ // 使用ajaxSubmit $(this).ajaxSubmit(function(){ $("#output1").html("提交成功").show(); }); return false; }) }) </script> </head> <body> <form id="myForm"> <input type="text" name="username"> <input type="text" name="password"> <input type="submit" value="提交"> <div id="output1" style="display: none"></div> </form> </body> </html>
On dirait que la première méthode est plus pratique.
Le paramètre function() est la fonction de rappel après une soumission réussie.
En utilisant cette méthode de soumission, la soumission de formulaires asynchrones peut être réalisée, ce qui est très pratique. Cependant, cela reste un peu insatisfaisant. Par exemple, je souhaite peut-être vérifier avant de soumettre le formulaire. Bien que cela puisse être fait manuellement en dehors de l'action de soumission du formulaire, cela est très gênant. Le plug-in de formulaire hérite-t-il de cette fonctionnalité ?
2. Paramètre d'options
Ce qui précède ne parle que d'un seul paramètre de fonction de rappel de fonction dans le formulaire. En fait, il a un autre paramètre, qui est les options. A quoi ça sert ?
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <script src="js/jquery-1.9.1.min.js"></script> <script src="js/jquery-form.js"></script> <script> var options = { target:'#output1', // 把服务器返回的内容放入id为output1的元素中 beforeSubmit: fun1, // 提交前的回调函数 success: fun2, // 提交后的回调函数 dataType: // 接收服务端返回的类型 xml,scrpit,json }; // beforeSubmit前可以作验证 function fun1(formData,jqForm,options){ // formData 提交值的数组对象 // jqForm 表单元素的jQuery对象,jqForm[0]是其dom对象 // 该函数如果返回false,则阻止表单提交 // formData可以判断全部不为空的情况 for(var i=0;i<formData.length;i++){ if(!formData[i].value){ alert("都不能为空"); return false; } } // jqForm可以判断某个不为空的情况 var form = jqForm[0]; if(!form.name.value){ alert("name不能为空"); return false; } // fieldValue()可以获取多值的数组形式,如checkbox var value = $('input[name=name]').fieldValue(); if(!value[0]){ return false; } } function fun2(responseText, statusText){ // 根据dataType不同responseText解析方式不同, // 默认 responseText // xml responseXml以xml解析 // json responseJson } $(function(){ //方式二 与方式一效果一样 $("#myForm").ajaxForm(options); // 要想使options生效,需要作为参数传递 }) </script> </head> <body> <form id="myForm"> <input type="text" name="username"> <input type="text" name="password"> <input type="submit" value="提交"> <div id="output1" style="display: none"></div> </form> </body> </html>
On peut voir que dans la fonction de rappel fun1 de beforeSubmit, nous avons trois façons d'obtenir les données du formulaire : formData, jqForm et fieldValue, qui satisfont différentes manières d'obtenir des valeurs. . Tant qu'il renvoie false, cela peut empêcher la soumission du formulaire. Le fun2 du rappel de réussite a également des valeurs d'état et renvoie des données du serveur. Vous pouvez le gérer comme vous le souhaitez.