はじめに
私はフォームがあるワードプレスのウェブサイトを開発しています。そのフォームの検証は、jQuery Inline Form Validation Engine 2.2 を使用して行われます。
はい/いいえの2つのオプションがあり、その後に誰かが「いいえ」を選択した場合にのみ表示される必須フィールドが続くラジオボタンがいくつかあり、その理由を説明しています。次の例のようなもの:
1 - 「ジョン マトリックス」は「ジョン ランボー」よりもクールですか?
→はい
いいえ
2 - 「コマンドー」は史上最高の映画ですか?
はい
→いいえ
なぜだめですか?_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ( *必須)
したがって、誰かが「いいえ」と答えると、「理由」フィールドが表示されます。
if( $('#no_commando_field').is(':checked')) {
$('#why_not_field').show();
} else {
$('#why_not_field').hide();
}
問題
私の問題は、誰かが「はい」オプションを選択した場合でも、「理由」フィールドが必須であることです(想定されているように)。前の回答が「いいえ」の場合にのみ、このフィールドを必須にしたいと思います。
問題を解決するクエスト
コードを調べているうちに (私はバックエンドの専門家ではありません)、インライン フォーム検証エンジンが "validate[required]" という名前のクラスを必須フィールドに追加していることに気付きました。jQuery を使用してそのクラスを削除しようとしましたが、検証は引き続き行われます。
var validate;
validate = $('#why_not_field').attr('class');
validate = validate.replace('validate[required]','not_validated');
$('#why_not_field').attr('class',validate);
if ( $('#no_commando_field').is(':checked')) {
validate = validate.replace('not_validated','validate[required]');
$('#why_not_field').attr('class',validate);
} else {
validate = validate.replace('validate[required]','not_validated');
$('#why_not_field').attr('class',validate);
}
クラス スワップは完全に機能していますが、何らかの理由で検証がまだ行われています。この解決策は以前のフォーム (wordpress バックオフィスのみ) ではうまくいきましたが、この問題を解決するための正しい方法であるかどうかはわかりません。
この問題を解決するために、この問題をよりよく理解できるように、誰かに正しい方向に向けてもらいたいです。前もって感謝します。