「この項目は必須項目です」というエラーはデフォルトでは無いようですが、独自で設定されたんでしょうか?
あと、文字だけでは分かりにくいので実際の画面のスクリーンショットを撮るなどして、そこへどのように表示したいのか文言を書き込んで提示した方がイメージが簡単に伝わると思います。
manboさま
ご返信頂きありがとうございます。
おっしゃる通り、MW WP Formで作ったフォームにバリデーションルールを追加、「必須項目」にチェックをいれました。
また、fanctions.phpにフィルターフックとして、
「mwform_validation_mw-wp-form-xxx」を追記して、個別の質問に対するエラーメッセージを設定しました。
fanctions.php
function my_validation_rule( $Validation, $data, $Data ) {
$Validation->set_rule( 'q1', 'required', array( 'message' => '問1:必須項目です。' ) );
$Validation->set_rule( 'q1-2', 'noEmpty', array( 'message' => '問1-2:必須項目です。' ) );
return $Validation;
}
add_filter( 'mwform_validation_mw-wp-form-2992', 'my_validation_rule', 10, 3 );
このルールに追記できればとても有難いのですが、可能かどうかもわかりません。
画面は公開前のものなので、難しいです。すみません。
伝わりにくい内容で申し訳ないのですが、ご教示いただけると助かります。
どうぞよろしくお願いします。
×fanctions.php
〇functions.php
問1:必須項目です。
問2:必須項目です。
これは出来たということでしょうか?
「未回答の必須フィールドまたはエラーを含む回答があります。 これをチェックしてください。」
これをどこに表示するのかということを尋ねただけで実際の本当の画面でなくとも、適当なフォームの形を作ってそこへ書き込んでもらった方が伝わりやすいという意味なんですが?
とりあえずフォームの上とか下とか一か所に表示という考え?
もしそうならmwform_post_content_mw-wp-form-xxx
を使えばフォームの前後に任意の情報を出力できるようですし、それよりも更に上か下だとthe_content
で出来ると思います。
例
フォーム下部に出す場合は$text.$contentを入れ替える。
function my_mwform_post_content( $content, $Data ) {
$text = '未回答の必須フィールドまたはエラーを含む回答があります。 これをチェックしてください。';
return $text.$content;
}
add_filter( 'mwform_post_content_mw-wp-form-2992', 'my_mwform_post_content', 10, 2 );
多分、これだと表示されたままになると思うので、入力エラーがある時だけ文言を出力するようにしたら良いと思います。
-
この返信は6年、 8ヶ月前にmanboが編集しました。
manboさま
色々ご指摘ありがとうございます。
>これをどこに表示するのかということを尋ねただけで実際の本当の画面でなくとも、適当なフォームの形を作ってそこへ書き込んでもらった方が伝わりやすいという意味なんですが?
理解不足ですみません。
改めて、希望するフォームの形をかいてみました。
<form>
<p>未回答の必須フィールドまたはエラーを含む回答があります。 これをチェックしてください。</p>
<p>[mwform_error keys="q1"]</p>
<p>[mwform_error keys="q2"]</p>
<p>問1の質問</p>
[mwform_textarea name="q1" cols="101" rows="1" show_error="false"]
<p>問2の質問</p>
[mwform_textarea name="q2" cols="101" rows="1" show_error="false"]
<li>[mwform_submitButton name="mwform_submitButton-xxx" submit_value="Submit"]</li>
</form>
>とりあえずフォームの上とか下とか一か所に表示という考え?
というよりかはフォームの中、エラーのすぐ上に表示したいです。
manboさんの提示していただいた
「mwform_post_content_mw-wp-form-xxx」を使うやりかたは、
<p>未回答の必須フィールドまたはエラーを含む回答があります。 これをチェックしてください。</p>
<form>
<p>[mwform_error keys="q1"]</p>
</form>
となるということでしょうか?
また、
>多分、これだと表示されたままになると思うので、入力エラーがある時だけ文言を出力するようにしたら良いと思います。
ということは別の仕掛け(たとえばJavaScript)を入れる必要があるということでしょうか?
重ねての質問でご迷惑をおかけしますが、
どうぞよろしくおねがいします。
試してみたら分かると思いますが$content
はフォームなのでフォームの中の最上部または最下部に追加される形になるので、したがって$text.$content
だと<form>
の直後、$content.$text
だと</form>
の直前だと思います。
文言を表示、非表示にするにはJavaScriptが手っ取り早いかもしれません。
もしくは
問1:必須項目です
。
などの文言を出す処理に引っかけて出力できた方がスマートな気もします。
tpnagahashiさん、こんにちは。
入力フォームの上にエラーメッセージを表示させる方法を下記サイトにまとめてみましたので一度試して頂けますか。
https://webcre-archive.com/2018/02/07/mw-wp-form-error-message/
manboさま
ryu263さま
具体的なアドバイスありがとうございました!
お蔭で思っていた形でのエラー表記ができました。
検討した結果、Jsファイルに
// MW WP Form エラーメッセージの表示
jQuery(function() {
if( $( '.mw_wp_form .error' ).length ) {
$( '.mw_wp_form' ).addClass( 'mw_wp_form_error' );
}
});
とし、
フォームのほうに
<p class="error-message">未回答の必須フィールドまたはエラーを含む回答があります。 これをチェックしてください。</p>
<p>[mwform_error keys="q1"]</p>
<p>[mwform_error keys="q1-2"]</p>
と設定。
エラー時に共通のメッセージを出すことができました。
本当にありがとうございました。