ホームページ >ウェブフロントエンド >jsチュートリアル >JQurey 検証フォーム validation_jquery の使用方法の詳細な説明
は、クライアント フォームを検証でき、優れたスケーラビリティを備えた多くのカスタマイズ可能なプロパティとメソッドを提供する優れたプラグインです。この記事は、この例を説明することで、Validation の応用を理解することを目的としています。
この例に含まれる検証は次のとおりです:
ユーザー名: 長さ、文字検証、再現性 Ajax 検証 (既に存在するかどうか)。
パスワード: 長さの検証、パスワードの検証の繰り返し。
メール: メールアドレスの確認。
固定電話: 中国本土の固定電話番号の確認。
携帯電話番号: 中国本土の携帯電話番号の確認。
Web アドレス: Web サイト URL アドレスの検証。
日付: 標準の日付形式の検証。
数値: 整数、正の整数の検証、数値範囲の検証。
ID カード: 中国本土の ID 番号の確認。
郵便番号: 本土の郵便番号を確認します。
ファイル: ファイル タイプ (拡張子) の検証。たとえば、画像のみのアップロードが許可されます。
IP: IP アドレス 検証。
検証コード: 検証コード ajax 検証。
使用方法:
1. jquery プラグインと jquery.validate プラグインを準備します
<script type="text/javascript" src="js/jquery.js"></script> <script type="text/javascript" src="js/jquery.validate.js"></script>
2. CSS スタイルを準備します
ページ スタイルの詳細については説明しません。独自のスタイルを作成することも、デモ ページのソース コードを参照することもできます。ここで強調すべき重要なスタイルは、検証情報を表示するスタイルです
label.error{color:#ea5200; margin-left:4px; padding:0px 20px; background:url(images/unchecked.gif) no-repeat 2px 0 } label.right{margin-left:4px; padding-left:20px; background: url(images/checked.gif) no-repeat 2px 0}
3.XHTML
<form id="myform" action="#" method="post"> <table width="100%" border="0" cellspacing="0" cellpadding="0" class="mytable"> <tr class="table_title"> <td colspan="2">jquery.validation 表单验证</td> </tr> <tr> <td width="22%" align="right">用户名:</td> <td><input type="text" name="user" id="user" class="input required" /> <p>用户名为3-16个字符,可以为数字、字母、下划线以及中文</p></td> </tr> <tr> <td align="right">密码:</td> <td><input type="password" name="pass" id="pass" class="input required" /> <p>最小长度:6 最大长度:16</p> </td> </tr> <tr> <td align="right">确认密码:</td> <td><input type="password" name="repass" class="input required" /></td> </tr> </table> </form>
スペースの制限により、この記事では例の HTML コードの一部のみを抜粋します。詳細な XHTML コードについては、ページのデモ ソース コードを参照してください。ラベルに「必須」クラス スタイルを与えたことは言及する価値があります。その役割については以下で説明します。
4. 検証プラグインを適用します
Validation プラグインを呼び出すメソッド:
$(function(){ var validate = $("#myform").validate({ rules:{ //定义验证规则 ...... }, messages:{ //定义提示信息 ...... } }) });
rules: 検証ルールを key:value の形式で定義します。key は検証される要素で、value は文字列またはオブジェクトです。たとえば、ユーザー名の長さを確認し、空にすることを許可しません:
rules:{ user:{ required:true, maxlength:16, minlength:3 }, ...... }
実際には、XHTML コード内で必要に応じて input の class 属性を直接指定できるため、JS 部分で繰り返し記述する必要はありません。メール等の検証と同様に、inputのclass属性を直接メールに設定します。
メッセージ: プロンプト メッセージをキー:値の形式で定義します。キーは検証する要素、値は文字列または関数です。検証が失敗した場合にメッセージが表示されます。
messages:{ user:{ required:"用户名不能为空!", remote:"该用户名已存在,请换个其他的用户名!" }, ...... }
この例に含まれる検証 JS は、上記のルールに従って記述されており、検証プラグインは次のように多くの基本的な検証メソッドをカプセル化します。
required:true には値が必要であり、空にすることはできませんremote:url を使用して、ユーザー名が既に存在するかどうかを判断できます。
サーバー は、検証に合格したことを示します。
minlength:6 最小の長さは 6 ですmaxlength:16 最大長は 16 です
rangelength: 範囲の長さ
範囲:[10,20] 値の範囲は 10 ~ 20 です
メール:本物の確認メール
url:true 確認 URL
dateISO:true 日付形式 'yyyy-mm-dd' を確認します
数字:true は数字のみです
accept:'gif|jpg' 接尾辞が gif または jpg の画像のみを受け入れます。ファイルの検証によく使用される拡張子
equalTo:'#pass' はフォーム フィールドの値と等しく、パスワードの繰り返し入力を検証するためによく使用されます
さらに、プロジェクトの実際の状況に基づいていくつかの検証も拡張しました。検証コードは validate-ex.js にあります。この JS は使用前にロードする必要があります。次の検証が提供されます:
userName:true ユーザー名には、漢字、英字、数字、アンダースコアのみを含めることができます
isMobile: 真の携帯電話番号の確認
isPhone: 真の本土携帯電話番号の確認
isZipCode:本当の郵便番号の確認
isIdCardNo:true 中国本土の ID 番号の確認
ip:真の IP アドレスの検証
上記で提供した検証方法は、基本的にほとんどのプロジェクトのニーズを満たします。他に特別な検証要件がある場合は、次のように拡張できます:
jQuery.validator.addMethod("isZipCode", function(value, element) { var zip = /^[0-9]{6}$/; return this.optional(element) || (zip.test(value)); }, "请正确填写您的邮政编码!");
トラブルシューティング
1. プロジェクトにユーザー名が存在するかどうかを確認したところ、中国語入力の検証がサポートされていないことが判明しました。私の解決策は、encodeURIComponent でユーザー名をエンコードし、バックグラウンドでPHP で受け入れられた値 を URL デコードすることです。
user:{ remote: { url: "chk_user.php", //服务端验证程序 type: "post", //提交方式 data: { user: function() { return encodeURIComponent($("#user").val()); //编码数据 }} } },
<?php $request = urldecode(trim($_POST['user'])); usleep(150000); $users = array('daimajiayuan.com', 'jeymii', 'Peter', 'daimajiayuan'); $valid = 'true'; foreach($users as $user) { if( strtolower($user) == $request ) $valid = 'false'; } echo $valid; ?>
データベース からユーザー名データを取得し、クライアントから受信したデータと比較します。
2. チェックボックスとラジオ コントロールを検証する場合、検証情報は最後のコントロール テキストの後に表示されず、最初のコントロールの直後に表示されます。これは要件を満たしていません。
解決策は、次のコードを追加して validate({}) することです:
errorPlacement: function(error, element) { if ( element.is(":radio") ) error.appendTo ( element.parent() ); else if ( element.is(":checkbox") ) error.appendTo ( element.parent() ); else if ( element.is("input[name=captcha]") ) error.appendTo ( element.parent() ); else error.insertAfter(element); }
3、重置表单。Form表单原始的重置方法是reset自带
ece96ac9f78386f207f2557f088783a7
点击“重置”按钮,表单元素将会重置,但是再运行Validation插件后,验证的提示信息并没重置,就是那些提示信息没有消失。感谢Validation提供了重置表单的方法:resetForm()
$("input:reset").click(function(){ validate.resetForm(); });
以上所述就是本文的全部内容了,希望大家能够喜欢。