2017-03-21 15 views
1

私は、ユーザーにラジオボタンの形式で権限を与えられた代表者がいるかどうか尋ねられるフォームを持っています。ユーザーが「はい」オプションを選択すると、代理人に関するさらに多くのフィールドが表示され、必要な入力「代表メール」が表示されます。必須フィールドは要素表示時にのみ必要です。

ユーザーが「はい」オプションを選択した場合にのみ必要な方法はありますか?ユーザーが「オプションなし」を選択した場合、フォームはこの必須フィールドの値を検索し続けるため、送信しません。

<form> 

<div class="onBehalfOf"> 
<input type="radio" checked="checked" name="Radio" id="yes" value="Yes"> 
<label for="yes"> Yes</label> 
<input type="radio" name="Radio" id="no" value="No"> 
<label for="no"> No</label> 
</div> 

<div class="authorizedRep"> 
Email: 
<input type="email" required /> 
</div> 

<input type="submit" label="submit" /> 

</form> 

js Fiddle Example

+0

あなたの質問に答えは決して受け入れられないようです。これは人々を惑わせ、あなたが答えを得る可能性を低くします。あなたは、過去および将来の質問に関するあなたの問題を解決した答えを受け入れることを検討するべきです。参考までに、これは提出された回答の目安です。 – Yoda

答えて

2

小さな変更で、あなたは表示/非表示のフィールドを電子メール入力のrequired属性を切り替えることができます。適切なemailInputクラスを要素に追加するだけです。

$('.onBehalfOf input:radio').change(function() { 
    if ($(this).is(':checked') && $(this).val() == 'No') { 
    if ($('.authorizedRep').hasClass("hide")) { 

    } else { 
     $('.authorizedRep').addClass("hide"); 
     $('.emailInput').removeAttr('required'); 
    } 
    } 

    if ($(this).is(':checked') && $(this).val() == 'Yes') { 
    $('.authorizedRep').removeClass("hide"); 
    $('.emailInput').attr('required'); 
    } 
}); 
+0

私は実際には同じことを考えていましたが、なぜこのようなことが起こったのか、あるいは必要な属性を取り除かずにフォームを続ける方法があるかどうかについての説明のようなものを探していました。私が気にしていたことを確認していただきありがとうございます。 – Jeremy

+0

フォームは、何があっても必要な属性を解析します。唯一の方法は、疑わしい通りに削除することです。フォームの必須フィールドを有効または無効にするための不明瞭な方法があると混乱することになります。 – Yoda

関連する問題