質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.83%

  • JavaScript

    14845questions

    JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

  • Ruby on Rails

    6562questions

    Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

クライアントサイドでvalidationをする場合の方針について

受付中

回答 0

投稿 編集

  • 評価
  • クリップ 1
  • VIEW 111

altb

score 59

お世話になっております。
クライアントサイドでバリデーションを行う場合の方針について、お聞かせいただきたいです。

現在、RubyonRailsでWebアプリケーションを作っています。
その際、クライアントサイドのバリデーションはclient side validationのgemを利用しているのですが、このgemはfocusoutの時にバリデーションを行うため、初期表示で一番上のinputにfocusしている場合、キャンセルボタンを押下するとバリデーションが走ってしまいます。
これに違和感を覚えたので他のRails製Webサービスを見たのですが、処理がばらばら(のように見える)で結局のところどのようにするのがベストなのか、わからなくなってしまいました。
見たところ最初のblankの時はバリデーションが動かず、blank以外の何らかのバリデーションにひっかかった(inputに値が入ったまま抜けた)時初めてバリデーションが効き始める、というような挙動をするものが多少多かったように感じたのですが、これが一般的なのでしょうか?皆様はどうやっているのかお聞きしたいです。
また、これを実現する際、focusout時にval() !== ''の場合コントロールにバリデーションをかける、もしくはあらかじめdata-flagなどを用意しておいて、バリデーションをかけ始める時にflagを1にしてflag === 1の時のみバリデーションをかける、などのようにしているのかなぁと思ったのですが、実際のところあれはどうやっているのでしょうか?

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正の依頼

  • think49

    2018/04/20 22:58

    キャンセルボタンとは、具体的にどのような処理でしょう?input[type=reset] のことですか。

    キャンセル

  • altb

    2018/04/21 11:20 編集

    例えば詳細 -> 情報編集に行ったときに、詳細に戻るボタンのことです。

    キャンセル

まだ回答がついていません

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 90.83%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

  • 解決済

    Railsでallow_blank: trueとpresence: trueを併用する理由

    モデルテストの演習 - RSpec/Capybara入門 - Ruby on Rails with OIAXのページでわからないところがあります。 なお、allow_blank:

  • 解決済

    Laravel 5.1タイムレンジのバリデーション

    Laravel5.1で予約サイトを作っています。 予約するには、名前などの他に、開始時間(start_time)と終了時間(end_time)をフォームから入力します。 予約内容は

  • 解決済

    Ajaxによるバリデーション処理について

    サーバサイドのバリデーション処理はとても重要ですが、ユーザビリティを高めるためにクライアントサイドでもバリデーション処理することはあると思います。 しかし、クライアントサイドでバ

  • 受付中

    railsチュートリアルのRSpecでエラーが発生する

    rails チュートリアル第3章を進めています。 $ rails generate rspec:install を実行すると以下のエラーが吐き出されます。 /User

  • 受付中

    SymfonyのForm FieldTypeのrequiredについて

    以前似たような質問をしたのですが回答を得られなかったので、再度質問させていただきました。 SymfonyのForm FieldTypeにrequiredがあると思いますが、S

  • 受付中

    rake db:seedができない。

    前提・実現したいこと Ruby on Rails でSNSサイトを作っています。  bundle exec rake db:seedをした際にエラーが起きました。  いろいろ

  • 受付中

    Railsでrake db:seedをやるとエラーがでる。

    前提・実現したいこと Ruby on Rails でSNSサイトを作成しています。 rake db:seedをやるとエラーがでて困っています。 どなたかわかる方いたら是非ご教

  • 解決済

    【Django】エラーメッセージについて

    表題の通りエラーメッセージについての質問です。 フォームにて必須フィールド作成し、そのフィールドを空欄のまま送信しようとすると【リスト内の項目を選択してください。】のようなメッセー

同じタグがついた質問を見る

  • JavaScript

    14845questions

    JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

  • Ruby on Rails

    6562questions

    Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。