※ ChatGPTを利用し、要約された質問です(原文:入力規則をまとめて定義)
フォームの書式設定に関する質問|入力規則をまとめて定義する方法は?
このQ&Aのポイント
cgi/perlを使用してフォームを作成しています。フォームの一部に製品入力欄を設けており、一度の登録申請で10個分の製品が登録可能です。ただし、製品ごとに販売先や販売日などの詳細項目を入力する必要があります。
現在、販売日の書式を「yyyy/mm/dd」で入力しないとエラーが発生するように設定しています。ただし、10個の製品全てに対して同じ書式チェックを記述すると、コードが冗長になります。
製品は最低1つの入力が必須であり、それ以外は任意となっています。入力がある場合にのみ書式チェックを行いたい場合、どのように記述すれば良いでしょうか。
お世話になります。
cgi/perlを使用してフォームを作成しています。
フォームの一部に製品入力欄を設けており、
一度の登録申請で1-10まで10個分製品が登録可能です。
それぞれの製品に、販売先、販売日など詳細項目を入力するようになっています。
同じ部分で別の問題も抱えているのですが、
今回は書式設定についてうかがわせてください。
上記販売日をyyyy/mm/ddの書式で入力しないとエラーを返すように以下のように記述しました。
if (($form{'kounyuu_01'} !~ /[\d\d\d\d]+\/[\d\d]+\/[\d\d]/){
&error('販売日の書式が間違っています。');
}
ただこれを10個分書くと01,02,03と末尾を変えただけの記述を何度もしなくてはならず、cgiが長くなってしまうため、まとめて定義したいと考えました。
そこで以下のようにしてみたのですが、
1つ目の製品以外の販売日が入力されていないと上記「'販売日の書式が間違っています。'」のエラーが返ってきてしまいます。
if (($form{'kounyuu_01'} !~ /[\d\d\d\d]+\/[\d\d]+\/[\d\d]/) | ($form{'kounyuu_02'} !~ /[\d\d\d\d]+\/[\d\d]+\/[\d\d]/) | ($form{'kounyuu_03'} !~ /[\d\d\d\d]+\/[\d\d]+\/[\d\d]/) | ($form{'kounyuu_04'} !~ /[\d\d\d\d]+\/[\d\d]+\/[\d\d]/) ....) {
&error('移管日の書式が間違っています。');
}
製品は最低1つの入力は必須ですが、それ以外は任意なので、
入力があった場合だけ書式をチェックするようにしたいのですがこの場合はどのようにすれば良いのでしょうか。
説明が悪くて申し訳ないですがアドバイスをお願い致します。m(__)m
お礼
Etherskyさん、 ありがとうございます。こんなにも短い記述で同じ指示ができるんですね! 他の必須項目なども直したくなってきました。。(^^; 今回は入力項目が非常に多いのでEtherskyさんの書き方を流用させていただく事にしました。 ありがとうございました。