追加した会員登録時の入力項目を、記入必須にしたい

AI-generated summary

会員登録フォームで追加した入力項目(住所など)を必須化したいという相談。追加自体は実装済みだが、必須化が効かない問題が発生。

・原因と対応:

  • input に required を付けても効かなかったのは、フォームに novalidate が指定されていたため(HTML5 のブラウザ検証を無効化)。
  • Liquid の {%- form ‘create_customer’ … novalidate: ‘novalidate’ -%} から novalidate を削除し、各 input に required を付与して解決。

・新たな課題:

  • メールまたはパスワード未入力時、Shopify の既定エラーが出ると他の入力値が消えてしまう。
  • メール・パスワードの検証や表示形式を他項目と合わせたいが、動的挙動を壊す懸念があり安全に編集できるか不明。
  • 該当コード(email/password の input とエラー表示)は提示済みだが、値保持(value の復元)方法や編集可否の具体案は未提示。

・現状:

  • 追加項目の必須化は達成。
  • メール/パスワードのバリデーション調整と、エラー時に他項目の入力値を保持する方法については未解決で、回答保留。

追加した会員登録時の入力項目を、記入必須にしたいです。

住所などの会員登録時の入力項目は、
コードを編集することで増やすことはできました。
しかしこれらの項目を記入必須にする方法が分かりません。

調べましたが、出てきませんでした。

コードを編集することで、
追加した項目を必須にすることはできるのでしょうか?

もし可能でなのであれば、そのコードを教えていただますと幸いです。

住所の項目を追加するために、下記のコードを追加しました。

「お客様に関するメモ」の欄に格納される状態です。

住所​

メールアドレスとパスワード以外は、
空欄の状態にしたままでも登録することができてしまいます。
他の項目も空欄のときにエラーとなるように編集したいです。

どうぞよろしくお願いいたします。

こちらで回答させて頂いているとおり、requiredを付ければ必須になるかと思います。

https://community.shopify.com/post/1286605

AraiTakayukiさん
ご返答くださり、ありがとうございます。

requiredを付けてみましたが、できませんでした。

住所​

教えていただいた掲示板にあったコードをそのままコピペしてみましたが、

こちらもなぜかできませんでした。

共有いただいていたリンク先に、「関連付けされたにnovalidateが設定された場合、required属性は無効になります。」との記述がありました。
コードをよく見ると、novalidateの記述がありました。
{%- form ‘create_customer’, class: ‘form’, data-form: ‘’, novalidate: ‘novalidate’ -%}

liquidがよくわかっていないのでどう対応すればいいか、

ご教授いただけますと幸いです。

{%- form ‘create_customer’, class: ‘form’, data-form: ‘’, novalidate: ‘novalidate’ -%}の中の、

novalidate: 'novalidate’を消去して、

それぞれのinput要素の中にrequiredを付け加えるとできました!

ただ、メールやパスワードを入れなかった場合は、

デフォルトのままエラーが出て、

他の入力情報が全て消去されてしまいます。

できればメールやパスワードも形式を合わせたいとも思うのですが、

動的な動作が入るため、壊れてしまうことが怖くて触れません。

メールやパスワードのコードをいじっても大丈夫なものなのでしょうか?

・メール部分のコード

{{ 'customer.register.email' | t }} {%- if form.errors contains 'email' -%} {{ 'general.accessibility.error' | t }} {% include 'icon-error' %} {{ form.errors.translated_fields['email'] | capitalize }} {{ form.errors.messages['email'] }}. {%- endif -%}

・パスワード部分のコード

{{ 'customer.register.password' | t }} {%- if form.errors contains 'password' -%} {{ 'general.accessibility.error' | t }} {% render 'icon-error' %} {{ form.errors.translated_fields['password'] | capitalize }} {{ form.errors.messages['password'] }}. {%- endif -%}

お手数をおかけしますが、どうぞよろしくお願いいたします。