ホームページ  >  記事  >  ウェブフロントエンド  >  H5によるユーザー登録の自動認証を完了する例を詳しく解説

H5によるユーザー登録の自動認証を完了する例を詳しく解説

Y2J
Y2Jオリジナル
2017-05-24 13:27:072511ブラウズ

Html5実装ユーザー登録自動検証機能サンプルコード

05-24 10:49:46 Author:php中国語サイト

自動検証機能を備えたHtml5ユーザー登録のデモを書きました。認証には Handlebarsテンプレートテクノロジーと携帯電話認証コードを使用します。

以下はエフェクトのスクリーンショットです:

1. ページコード: usersRegister.hbs

XML/HTMLコードコンテンツをクリップボードにコピーします
  1. >

  2. < ;html lang="ja">

  3. < >

  4. <meta http-equiv="Content-Type" content="text/html; charset=utf-8 「>」 ;

  5. <meta http-equiv="X-UA互換" content="IE=edge" />

  6. < ;title>用户注册title>

  7. <div class="main" >

  8. <div style="身長:5px;text-align:center;font-size:25px"> 欢迎您注册!div>

  9. <フォーム id="私のフォーム" クラス=「マイフォーム」>

  10. <div>

  11. <ラベル>用户名:ラベル>< input id="username" name="username" type="text" />

  12. div>

  13. <div>

  14. <

    ラベル>密码:ラベル>< ;input id=「パス」 名前=「パスワード」 type=「テキスト」 />

  15. div>
  16. <

    div >

  17. <

    ラベル>邮箱:ラベル> <input id=メール 名前=「メールアドレス」

  18. data-ideal

    =メールアドレスが必要」 " type="email" />

  19. < /
  20. div>

  21. <div>

  22. <ラベル&g t;電话:label><input id="電話" type="text" name="電話" data-ideal="電話" />

  23. < /div>

  24. <div>

  25. <label>供应商V码: label><input id="vCode" type="text" name="vCode" data-ideal= 「vコード」 />

  26. div>

  27. <div>

  28. <ラベル> ;真实姓名:label><input id="trueName" type="text" name =「本当の名前」 data-ideal="trueName" />

  29. div>

  30. <div>

  31. <label>手机验证码:label><input id=「電話コード」 type= "text" name="telCode" data-ideal="telCode" />

  32. "margin-bottom:5px;">

    <
  33. ボタン

    id="getTelCode" type="ボタン" スタイル=" margin-left

    :160px;
  34. margin-right
  35. :auto; "

    >携帯電話認証コードを取得ボタン> margin-top:5px; :5px ;「/> --<div > <ラベル>性別:ラベル

  36. >
  37. id=「性別」 名前=「性別」 > オプション>

  38. select &gt;&lt;/

    div
  39. &gt;

  40. <label>昵称:label><input id="ニックネーム" タイプ=" text" name="nickName" data-ideal="nickName" />

  41. div >

  42. div>

  43. nbsp;     <label>年龄:label><input id="age" type =「テキスト」 名前=「年齢」 data-ideal=「年齢」 />

  44. div> ;-->

  45. div>

  46. <script type="text/javascript">

  47. var

    オプション = {

  48. onFail : function() {

  49. alert($myform.getInvalid().length + ' 無効なフィールドです。')
  50. },
  51. 入力 : {
  52. 'パスワード' : {
  53. フィルター : '必須 パス'
  54. },
  55. 「ユーザー名」: {
  56. フィルター : 「必須のユーザー名」
  57. },

  58. 'メール' : {

  59. フィルター : '必須のメールアドレス'

  60. },

  61. '電話': {

  62. フィルタ : '必須の電話'

  63. },
  64. 「本当の名前」 ' : {
  65. フィルター : '必須'
  66. },
  67. 'vコード' : {
  68. フィルター : '必須'
  69. 'telCode ' : {
  70. フィルター : '必須'
  71. }
  72. /*
  73. 「年齢」 : {
  74. フィルター : 「必須の digit」、

  75. データ : {

  76. 最小: 16、

  77. 最大: 70

  78. }

  79. }、

  80. 「ファイル」 : {

  81. フィルタ : 「拡張子」,

  82. データ : {

  83. 拡張子 : [ 'jpg' ]

  84. }

  85. },

  86. 」コメント': {

  87. フィルタ : '最小 最大'、

  88. データ : {

  89. 最小: 50,

  90. 最大: 200

  91. }

  92. }、

  93. 「状態」: {

  94. フィルター : 「除外」,

  95. データ : {

  96. 除外: [ 'デフォルト' ]

  97. },
  98. エラー
  99. : {

    除外: 「选择国籍」。     
  100. }
  101. },
  102. 'langs[]' : {
  103. フィルタ : 「最小 最大」、
  104. データ : {

  105. 最小: 2,

  106. 最大: 3

  107. },

  108. エラー : {

  109. min : 「少なくとも <strong」をチェックしてください>2strong> オプション。」、

  110. 最大 : 「以下」 強い>3強い> オプション すべてを負っています。」     

  111. }

  112. }

  113. */

  114. }

  115. };     

  116. $('#getTelCode').click(function() {

  117. var telephone = document.getElementById("telephone").value; / /手机番号番号

  118. if (電話 == null || 電話 == ""){

  119. alert("携帯番号番号は空ではありません!");

  120. }

  121. else{

  122. $.ajax({

  123. type : "GET",

  124. dataType : "

    json",

  125. url : "../

    api/getTelCode?電話 ="+ 電話、

  126. 成功 : function(msg) {

  127. },
  128. error : function(e) {
  129. alert("获取手机校验码失败!" + e );
  130. var $('#my-form') .idealforms(オプション).data( 'idealforms');

  131. $('#submit').click( function() {

  132. ユーザー名

  133. var password =

    document
  134. .getElementById("pass").value //パスワード
  135. var
  136. email

    = do;キュメント .getElementById(" email ") (vcode ") "+ ユーザー名 +" パスワード

    =
  137. "+ パスワード +"
  138. メール="+メール +"電話

    =
  139. "+電話 +"
  140. vCode="+vCode +" telCode

    =
  141. " + telCode +"
  142. tru​​eName="+ trueName,

    成功: function(msg) {
  143. :8083/uimcardprj/share/meun jsp / ディレクトリを取得します。ホスト アドレスの後に次のように追加します。uimcardprj/share/meun.jsp

  144. var

    pathName = window.document.location.pathname;

  145. localhostPaht
  146. =
  147. curWwwPath

    .sub

    string
  148. (0, pos);
  149. pathName

    substring(0, pathName.substr(1).indexOf('/') + 1); アラート("登録が成功しました!");

  150. $('#reset').click(function() {

  151. $myform.reset().fresh().focusFirst(); script

  152. >

  153. >

  154. 2.jq 入力検証: jquery.idealforms.js
  155. js 検証の初期バージョンは Cedric Ruiz からのもので、私はそれを少し修正しました。
  156. 部分検証のルールは次のとおりです:

    required: 'これは必須です。'
  157. number: '数値である必要があります。',

    digitals: '一意の番号である必要があります。'
  158. name: '少なくとも 3 文字の長さで、文字のみを含めることができます。'

    ユーザー名:'ユーザー名の最小文字数は 5 文字、最大文字数は 30 文字です。ユーザー名の最初の文字は英字、数字、中国語、アンダースコアを使用してください。 '
  159. pass:' パスワードは 6 ~ 15 桁で、少なくとも 1 つの数字と 1 つの大文字を含む必要があります。 '

    strongpass: '長さは 8 文字以上で、少なくとも 1 つの大文字と 1 つの小文字、および数字または
  160. 特殊文字
  161. を含む必要があります。'

    email: '有効な電子メール アドレスである必要があります。 (例:
  162. '">user@gmail.com)'
  163. phone: ' 有効な携帯電話番号である必要があります。(例: 18723101212)
  164. 以下はコード ファイル全体です:

  165. XML/HTML コード

    コンテンツをクリップボードにコピーします
    1. /*------------------------------------------ ----------------------------

    2. jq-idealforms 2.1

    3. * 著者: Cedric Ruiz

    4. * ライセンス: GPL または MIT

    5. * デモ: http://elclanrs.github.com/jq-idealforms/

    6. *

    7. ------------- -------------------------------------------------- -----------*/

    8. ;(function ( $, window, document, unknown ) {

    9. 'use strict';

    10. // Global Ideal Forms namespace

    11. $.idealforms = {}

    12. $.idealforms.filters = {}

    13. $.idealforms.errors = { }

    14. $.idealforms.flags = {}

    15. $.idealforms.ajaxRequests = {}

    16. /*--------------------------- -----------------------------------------------*/

    17. /**    

    18. * @namespace さまざまな ユーティリティのためのチェスト

    19.  */

    20. var Utils = {

    21. /**    

    22. * コレクション内の最も幅の広い要素の幅を取得します。    

    23. * @memberOf Utils

    24. * @param {jQuery

      object} $elms

    25. * @

      returns {number}

    26.    */

    27. getMaxWidth: function( $el ms ) {

    28. var

      maxWidth = 0

    29. $elms.
    30. each

      (function() {

    31. var
    32. width

      = $(this).outerWidth()

    33. if ( 幅
    34. >

      maxWidth ) {

    35. maxWidth

      = width

    36. }
    37. })
    38. return maxWidth
    39. },
    40. /**    
    41. * LESS 変数を取得するハッキーな方法
    42. * @memberOf Utils
    43. * @param {string} name LESS クラスの名前。    
    44. * @param {string} prop データが 保存される CSS プロパティ 。    
    45. * @returns {number, string}
    46.    */
    47. getLessVar: function( name, prop ) {
    48. var value = $('<p class="' + name + '">p&gて;')。 Hide().appendTo('body').css( prop )

    49. $('.' + name).remove()

    50. return ( /^d+/.test( value ) ? parseInt( value , 10 ) : 値 )

    51. },

    52. /**    

    53. * ES5 オブジェクトのようなkeys

    54.    */

    55. getKeys: function( obj ) {

    56. var keys = []

    57. for(var key in obj) {

    58. if ( obj.hasOwnProperty( key ) ) {

    59. keys.push( key )

    60. }

    61. }

    62. リターンキー

    63. },

    64. // オブジェクトの長さの取得

    65. getObjSize: function( obj ) {

    66. var size = 0, キー;     

    67. for ( key in obj ) {

    68. if ( obj.hasOwnProperty( key ) ) {

    69. size++;     

    70. }

    71. }

    72. サイズを返す。     

    73. },

    74. isFunction: function( obj ) {

    75. return typeof obj === nbsp;'function'

    76. },

    77. isRegex: function( obj ) {

    78. return obj instanceof RegExp

    79. },

    80. isString: function( obj ) {

    81. return typeof obj === 'string'

    82. },

    83. getByNameOrId: function( str ) {

    84. var $

      el = $('[name="'+ str +'"]').length

    85. ? $('[

      name="'+ str +'"]') // 名前別

    86. : $('#'+ str) // ID別

    87. return $el.length

    88. ? $el

    89. : $.error('フィールド "'+ str + '" が存在しません。')

    90. },

    91. getFieldsFromArray: function( fields ) {

    92. var f = []

    93. for ( var i = 0, l = フィールド.length; i < l; i++ ) {

    94. f.push( Utils.getByNameOrId( fields[i] ).get(0) )

    95. }

    96. 戻る$( f )

    97. },

    98. convertToArray: function( obj ) {

    99. return Object.prototype.toString.call( obj ) === '[object配列]'

    100. ? obj : [ obj ]

    101. },

    102. /**    

    103. * 任意の Ideal Forms 要素

    104. * @param $input jQuery $input オブジェクト

    105.    */

    106. getIdealType: function( $el ) {

    107. var

      type = $el.attr('タイプ') || $el[0].tagName.toLowerCase()

    108. return (

    109. /(text|password|email|number|search|url|tel|textarea)/.test( type ) && 'text' | |

    110. /file/.test( type ) && 'file' ||

    111. /select/.test( type ) && 'select' ||

    112. /(ラジオ|チェックボックス)/.test (タイプ)&& 'RadioCheck' || |

    113. /hr/.test( type ) && '区切り文字' ||

    114. /hidden/.test( type ) && 'hidden'

    115. )

    116. }、

    117. /**    

    118. * 入力を生成します

    119. * @param name 入力の`name` 属性

    120. * @param type `type` または `tagName`置く

    121.    */

    122. makeInput: function( name, value, type, list, placeholder ) {

    123. var markup,

      items

      = [], item, i, len
    124. function splitValue( str ) {
    125. var item, value, arr

    126. if ( /::/.test( str ) ) {

    127. arr = str.split('::')

    128. item = arr[ 0 ]

    129. = arr[ 1 ]

    130. } else {

    131. item = value = str

    132. }

    133. return { item: item, value: value }

    134. }

    135. // テキスト & ファイル

    136. if ( /^(text|password|email|number|search|url|tel|file|hidden)$/.test(type) )

    137. マークアップ = '+

    138. 'type="'+ type +'" '+

    139. 'id="'+ name +'" '+

    140. '名前= "'+ 名前 +'" '+

    141. '="'+ 値 +'" '+

    142. (プレースホルダー && 'プレースホルダー) =「'+ プレースホルダー +'」 ') +

    143. '/>'

    144. // Textarea

    145. if ( /textarea/.test( type ) ) {

    146. マークアップ = '< textarea id="'+ name +'" name="'+ name +'" value="'+ value +'">textarea >'

    147. }

    148. // Select

    149. if ( /select/.test( type ) ) {

    150. アイテム = []

    151. for (

      i = 0, len = list.length; 私は レン; i++ ) {

    152. item = splitValue( list[ i ] ).item

    153. value

      = splitValue( list[ i ] ).value

    154. items.push('<オプション value="'+ value +'">'+ item +'オプション& GT;」 )

    155. }

    156. マークアップ =

    157. '