jVForms.js-クロスブラウザーフォーム検証ポリフィル


これは何ですか



  1. text | textareaのようなHTMLフォームを自動的に確認します。
  2. フォームは「必須」および「パターン」属性に対してチェックされ、主にこれらの属性をサポートしないブラウザー向けに設計されています。
  3. すぐに使用できる組み込みのテンプレートセット。
  4. フォーム内とそれ以外の両方をクリックして、HTML要素にフォーム送信ハンドラーをインストールする機能。


まあ、なぜ?



残念ながら、すべてのブラウザがrequiredpatternなどの標準属性をサポートできるわけではありません。残念なことに、誰もがブラウザを最新バージョンに更新するとは限りません。

インターネットエクスプローラークロムオペラサファリFirefoxAndroidiOS
必要な10.05.0+9.6+x4.0+2.3+3.0+
模様10.05.0+9.6+x4.0+2.3+3.0+


はい、そうです! どうする?


有能なjVForms.js polyphileを使用できます。これは、多くのスペースを占有せず、設定を必要とせず(たまにのみ)、フォームをチェックするための汚い作業をすべて行います。

そしてどうやって?


ドキュメントの最後の「body」タグを閉じる前にjVForms.min.jsを含めて、初期化します。

<script src="jVForms.min.js"></script> <script> jVForms.initialize(); </script> 


それから?


フォームフィールドに属性 `required =" required "を追加し、要素を必須にします。

 <input type="text" name="field_1" value="" required="required"/> 


HTMLの必須属性

属性 `pattern =" RegExp "`を追加します。ここで、 `RegExp`はフォームを検証するための正規表現です。
 <input type="text" name="field_1" value="" required="required" pattern="^\d+$"/> 


HTMLパターン属性

正規表現とは何ですか?


正規表現の追加が困難な場合は、クラスで宣言するだけで既製のテンプレートセットを使用できます。
 <input type="text" name="field_1" value="" class=""/> 


テンプレートリスト:



テンプレートはいくつでも宣言できますが、最初のテンプレートのみが機能します。
 <input type="text" name="field_1" value="" class="vf-numInt vf-wordUSLower vf-dataDMYus otherClass"/> 


パターン属性とパターンクラスを宣言する場合、パターンクラスは機能しません。
 <input type="text" name="field_1" value="" required="required" pattern="^\d+$" class="vf-numInt"/> 


属性 `required =" required "が省略され、テンプレートクラスまたは属性` pattern`が追加される場合、このフィールドは必須ではありません。
ただし、まだ入力されている場合はチェックされます。
 <input type="text" name="field_1" value="" class="vf-numInt"/> 


送信は私に合わない!


フォーム内の他の要素にハンドラーをインストールするには、 vf-submitクラスを追加する必要があります。
 <form> <input type="text" required="required" name="name" class="vf-numInt"/> <input type="text" name="phone"/> <textarea name="area"></textarea> <span class="vf-submit"></span> </form> 


フォーム外のその他の要素にハンドラーをインストールするには、 vf-submitクラスを追加し、この要素をフォームに関連付ける必要があります。
これを行うには、フォームでid属性またはname属性を指定し、この属性の値をクラスとして要素ハンドラーに割り当てる必要があります。
 <form id="formId"> <input type="text" required="required" name="name" class="vf-numInt"/> <input type="text" name="phone"/> <textarea name="area"></textarea> </form> <span class="vf-submit formId" ></span> 


間違いだけが欲しい。


jVFormsは、フォームの検証時に通知のタイプを変更できます。これには3つの値が割り当てられます。



デフォルト値は「すべて」です。 たとえば、この値を「オフ」に変更するには、初期化関数に次を渡す必要があります。
 <script> jVForms.initialize({ notice: 'Off' }); </script> 


そして、結果は何ですか?


その結果、石鹸のように単純な小さな多相性物質が得られました。 現在、最新のブラウザーには自動フィールド強調表示が組み込まれているため、 jVForms.jsを使用する場合、競合や視覚的な拒否はありません。

Git: jVForms.js

ご清聴ありがとうございました!

デモはこちら!

Source: https://habr.com/ru/post/J181782/


All Articles