如果用户对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的数组?
答案 0 :(得分:2)
这些局部变量是否存在其他地方使用的真假无线电数量?如果不是,您可以跳过此总和,并在任何true
上显示此div,如下所示:
$ ->
$('.legal-information input[type=radio]').on 'change', ->
if $('.legal-information input[type=radio][value=true]:checked').length > 0
$('.legal-info-extra-info:hidden').slideDown('fast')
else
$('.legal-info-extra-info:visible').slideUp('fast')