1
ラベルが「はい」のラジオボタンが選択されると、クラスに「公開」クラスを追加する必要があります。これまでのところ私は自分のコードを設定して、必要なクラスを入力に適用するようにしましたが、 'reveal-if-active' divに 'reveled'クラスを追加する方法が必要です。最初の1つ後に複数のyes/noの質問があるので、このHTML構造全体が繰り返されます。だから、それぞれの「活発な場合に表示する」divは一意でなければなりません。ここでチェックされたラジオ/チェックボックス、複数のインスタンスに基づいてdivを表示
は、私が使用するために必要なのですHTMLの構造です:
<div class="form-group two-column">
<input id="a1" type="radio" name="ayesno" value="1">
<label for="a1">yes</label>
</div>
<div class="form-group two-column">
<input id="a2" type="radio" name="ayesno" value="2">
<label for="a2">no</label>
</div>
<div class="reveal-if-active">
<label for="how-many-people">If <strong>yes</strong> how many people?</label>
<input type="text" name="a-how-many-people" class="require-if-active" data-require-pair="#a1" required="">
</div>
ここで私がこれまで持っているJSです:
var FormStuff = {
init: function() {
this.applyConditionalRequired();
this.bindUIActions();
},
bindUIActions: function() {
$("input[type='radio'], input[type='checkbox']").on("change", this.applyConditionalRequired);
},
applyConditionalRequired: function() {
$(".require-if-active").each(function() {
var el = $(this);
if ($(el.data("require-pair")).is(":checked")) {
el.prop("required", true);
$('[data-id=' + $('input:checked').prop('id') + ']').addClass('reveal');
} else {
el.prop("required", false);
el.removeClass("revealed");
}
});
}
};
FormStuff.init();