質問のあるフォームがあります。はいと答えると、一連のチェックボックスが表示されます。no と答えた場合、何も起こりません。
<tr>
<td>Question?</td>
<td>
<label><input name="selector" type="radio" value="yes" />Yes</label>
<label><input name="selector" type="radio" value="no" />No</label>
<br />
<div id="subset">
<label class="disabled"><input name="select1" type="checkbox" value="select1" />option1</label><br />
<label class="disabled"><input name="select2" type="checkbox" value="select2" />option2</label><br />
<label class="disabled"><input name="select3" type="checkbox" value="select3" />option3</label><br />
<label class="disabled"><input name="select4" type="checkbox" value="select4" />option4</label>
</div>
</td>
</tr>
<script>
$(document).ready(function(){
$('input[name=selector]').click(function(){
var selector = $(this).val();
if (selector == 'no') {
$('#subset label').addClass('disabled');
$('#subset input').attr('disabled', 'disabled');
$('#subset input').attr('checked', false);
} else {
$('#subset label').removeClass('disabled');
$('#subset input').removeAttr('disabled');
}
});
});
</script>
このコードは正常に機能しますが、フォームは事前入力できます。その場合、同じように動作する必要があります。yes が選択されている場合、sset が表示されます。
別のコード ブロック (以下を参照) で jQuery を使用してこれを簡単に実行できることはわかっていますが、既存のコードを少し変更するだけでこれを実行できることを望んでいました。
var selector = $('input[name=selector]:checked').val();
if (selector == 'no') {
$('#subset label').addClass('disabled');
$('#subset input').attr('disabled', 'disabled');
$('#subset input').attr('checked', false);
} else {
$('#subset label').removeClass('disabled');
$('#subset input').removeAttr('disabled');
}
事前入力は smarty で行われ、すべてのラジオ タグとチェックボックス タグを挿入した以下のコードのようになります。
{{if $array.ELEMENT.answer=='VALUE'}} checked{{/if}}
問題は、多くのコードを追加せずに追加機能を取得するにはどうすればよいかということです。
ありがとう!