如果用户对 4 个问题中的任何一个回答是(单击“True”单选),我div
需要显示一个。但是,如果他们对所有人都回答错误,则隐藏div
. 我一直遇到的问题是,如果用户改变主意并返回并在任何问题上选择其他选项。我编写了这个 CoffeeScript 方法来处理它:
$ ->
numberFalse = 0
numberTrue = 0
hideIfAllNo = ->
$('.legal-information').find('input[type=radio]').each ->
if $(this).is(':checked') and $(this).val() is 'false'
if numberFalse >= 4 then return else numberFalse += 1
if numberTrue >= 1 then numberTrue -= 1 else numberTrue = 0
else if $(this).is(':checked') and $(this).val() is 'true'
if numberTrue >= 4 then return else numberTrue += 1
if numberFalse >= 1 then numberFalse -= 1 else numberFalse = 0
if numberFalse is 4
$('.legal-info-extra-info').slideUp('fast')
if numberTrue >= 1
$('.legal-info-extra-info').slideDown('fast')
$('.legal-information input[type=radio]').on 'change', ->
hideIfAllNo()
这里的问题(除了一些可能有问题的样式选择;也可以随意权衡这些)是用户可以增加numberFalse
或numberTrue
通过来回单击单个问题的相同 2 个单选按钮。到那时,或者如果他们返回并在多个问题上做出不同的选择,计数就会变得混乱。我曾考虑将元素附加到数组并计算数组长度,但这很快就变得混乱了。我应该如何处理用户改变主意?
编辑
我试图将 true 和 false 值存储在对象的属性中,但调用$('.legal-information').find('input[type=radio]:checked').attr('value','true');
只是设置value
为true
. 有没有办法只得到一个true
attrs数组?