• お問い合わせフォームのフロントバリデーションって、皆さんは普段どうされてますか?
    昔は、jQuery-validation.jsってあったけど、今はjQuery流行らないし、うちもJSはVanillaかTSで書くしってことで、フロントバリデーションは自分で書いてます。
    ただ、プラグインがないと何もできない、みたいなJS書けない人もいると思うので、そういう皆さんはどうされてるのかな〜、と。
    なんかおすすめのライブラリとかあったら、教えてください!
返信の受付は終了いたしました。
  • フロントのバリデートは簡単に突破される飾りでしかないから、基本はバックエンド側でするってのが前提。その上で、必要最低限だけフロントで実装する感じかな。JSをまったく知らない人にとってはしんどいかもだけど、バニラで書いても、わりと入門的な技術だと思う。
  • スレ主(/Ojnbv)2022年8月22日
    返信先: @eaSm9Fさん もちろんバックエンドもやってますよ。
    正規表現の配列渡したら、フロントのバリデーターと、バックエンドのメーラーのテンプレートが生成できるジェネレーター作ってます。
  • ただ、プラグインがないと何もできない、みたいなJS書けない人もいると思うので、そういう皆さんはどうされてるのかな?
    →そういう人はjquery使うし、そもそもその仕事受けないような...
  • 返信先: @Q9t0xVさん ありがとうございます。調べてみます!
    標準のpatternも、実はかなり出来るヤツなんですよね!
    onSubitじゃなくて、onBlurかonInputで発火させたいので使ったことないのですが、機会があればやってみようと思います。
  • 返信先: @/Ojnbvさん 僕の場合は、フロントで単独バリデート処理すると、万が一、バックエンドと差異が出た時に面倒(メアドなどは特に)なので、入力内容を都度バックエンドに渡す処理書いてますよ。ロジックはバックエンドにあって、それをフロントの入力時にも走らせるって感じです。
  • もうどの主要なバリデーターもメンテされておらず、ブラウザが持ってるバリデーション機能を使え、となっている。ブラウザを信じよう(笑)。<input> の type の種類や required、pattern などなど。
  • スレ主(/Ojnbv)2022年8月24日
    返信先: @eaSm9Fさん なるほどなるほど、それは一つアリですね。
    確かにバックエンドとフロントエンドのバリデーション差異は問題で、それを防ぐためにジェネレーター作ったんですが、後からの修正は結局同じことになるのが課題といえば課題でした。

    ただ、都度バックエンドに渡す処理だと、ちょっとプライバシーポリシー的な面で考査が必要かも…

    クライアントのプラボ内容次第ですが、送信ボタンを押す前にバックエンドに情報を送るのを良しとするか否か。もちろん、バックエンドに情報を送ったからと言って、その情報の記録を取るわけではないですが、「送信ボタンを押す前に情報を送信しない」という文言を明記しているクライアントもあったので、そういうとこを気にするクライアントには事前に確認取らないとですね…
  • スレ主(/Ojnbv)2022年8月24日
    返信先: @xIMqhPさん 受けないか、受けて外注するでしょうね。
    というか、周りに多いんですよね。お問い合わせフォーム作る技術力なくて、外注するところが。
    お問い合わせフォームすら作れなくて、Web受注すんなよ、っていうw
  • スレ主(/Ojnbv)2022年8月24日
    返信先: @yRLaA9さん pattern属性いいですよね。自分で作ったバリデーションライブラリは、JS側に正規表現のパターンを持たせてますが、将来的にはpattern属性から取るようにしようかと思ってます。
  • 返信先: @/Ojnbvさん あーまぁ確かに...
    ワードプレスで組まれることが多いから減ったけど
    静的なサイトだとフォームだけの依頼とかたまに来るな
  • スレ主(/Ojnbv)2022年8月26日
    返信先: @自分 あのあと、色々考えてジェネレーターの内容を見直しました。
    新たにバリデーションの定義ファイルをJSONで作るようにし、フロントからはfetch、バックエンド(PHP)からはfile_get_contentsで読み込み、定義を共通化することにしようと思います。
    これであれば、送信前に内容をサーバーサイドに送らなくてすみそうです。
  • 返信先: @/Ojnbvさん JSとPHPで定義を共有できればいいわけですから、それもひとつの方法ですね。
    昨今のフロントエンドでは、typescirptなどからトランスパイルすることが多いでしょうから、いわゆるJSコンパイル時に定義ファイルを読み込むという方法でもいけますね。僕は、定数をJSとPHPを共有する時に、この方法を用います。