前提・実現したいこと
開発種類:webサイト
使用フレームワーク:RubyOnRails(5.X)
サイト内でform入力が行われる際、リアルタイムで任意のバリデーションをかけ、条件外の場合にはエラーメッセージの表示などを行いたい。
発生している問題・エラーメッセージ
リアルタイムにバリデーションをかける方法を調べてみたところ、「Parsley.js」というjQueryのプラグインで実装可能という記事を見つけ、早速組み込んでみたのですが、
「通常のformでの動作」と「railsのform_tag機能を利用して生成したformでは動作しない」
という問題が発生しました。
(HTML5の機能として動作しているバリデーションはform_tagでも機能しています。)
該当のソースコード
動作する
html
1<form data-parsley-validate="" data-parsley-trigger="keyup focusout change input"> 2 <input type="email" name="email" id="email" value="" placeholder="メールアドレス" data_parsley_type="email"> 3 <input type="password" name="password" id="password" value="" placeholder="パスワード"> 4 <input type="submit" name="commit" value="ログイン" data-disable-with="ログイン"> 5</form> 6
動作しない
html
1<%= form_tag "", data_parsley_validate: "",data_parsley_trigger: "keyup focusout change input" do %> 2 <%= text_field_tag :email, "",placeholder: "メールアドレス", data_parsley_type: "email", type: "email" %> 3 <%= password_field_tag :password, "", placeholder: "パスワード" %> 4 <%= submit_tag "ログイン"%> 5<% end %>
動作しない(form_tagから生成されたコード)
<form data_parsley_validate="" data_parsley_trigger="keyup focusout change input" action="" accept-charset="UTF-8" method="post"> <input name="utf8" type="hidden" value="✓"> <input type="hidden" name="authenticity_token" value="XXXXXXXX=="> <input type="email" name="email" id="email" value="" placeholder="メールアドレス" data_parsley_type="email"> <input type="password" name="password" id="password" value="" placeholder="パスワード"> <input type="submit" name="commit" value="ログイン" data-disable-with="ログイン"> </form>
試したこと
formやform内の属性を一通りいじるなどをためしてみたのですが特に結果は変わらず、form_tagによって生成されたhidden要素が原因なのかもしれないとあたりをつけても、その後どうしていいものかわかりませんでした。
form_tagを用いてparsleyのバリデーションを動作させる方法を教えていただきたいです。
また、他に使えるなリアルタイムバリデーションのプラグイン、導入方法や知識などありましたら教えていただきたいです。
またもう一点、railsではモデルに記述することでバリデーションをかけることができると思うのですが、その条件とform送信前にかかるバリデーションの条件を簡単に同じにする方法などがあれば教えていただきたいです。
補足情報(FW/ツールのバージョンなど)
Parsley v2.8.1
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/09/28 12:31