2013-03-14 67 views
1

我有一个表单,用户可以1.)检查一个选项并完成。或者2.)检查另一个选项并填写一个文本字段。满足所有要求后显示警报

整体而言,毕竟是说和做完我想我的警报显示,但它没有。

$('.know-your-role').show('fast', function() { 
    var $checkboxes = $('input:checkbox.checkchoice'); 
    if($checkboxes.is(':checked')){ 
     // show this after checked and the input has been filled. 
     alert('cool'); 
    }else if($checkboxes.is(':checked') & $(".year").va() != ""){ 
     alert('cool'); 
    } 
}); 

如何在满足所有要求(复选框和输入)后获得显示的警报? 我制作了一张fiddle here以显示我正在处理的内容。

非常感谢您的帮助。

回答

1

除了之前的正确答案(缺少&和拼写错误val),这里还有一个更基本的逻辑问题。你似乎有这样的结构:

if (conditionA) { 
    // behaviorA 
} else if (conditionA && conditionB) { 
    // behaviorB 
} 

你永远不会用这样的逻辑达到行为B.如果conditionA失败,则conditionA && conditionB肯定也会失败。

您是否需要将您的ifelse-if块的顺序颠倒过来?

+0

你是对的逻辑部分。但即使在逆转条件http://jsfiddle.net/Jg8jT/10/的顺序时也是如此。我留下了同样的问题。 – Modelesq 2013-03-14 20:49:38

+0

有没有办法实现OR || senario:'if(conditionA && conditionB){ //这样做 }或(conditionA){ //做那个 }'? – Modelesq 2013-03-14 20:50:39

+0

'if(conditionA &&!conditionB){// behaviorA} else if(conditionA && conditionB){// behaviorB}'? – daGUY 2013-03-15 01:01:29

0

失踪“&”

$checkboxes.is(':checked') && $(".year").val() != "" 
0

您应该使用&&而不是&布尔比较,你也似乎有打错valva

0

我会建议有两个事件,一个在“教师”复选框被选中,一个在年份字段被完成。这两个事件都可以触发单个函数,显示您的警报以及您想要的任何其他逻辑。所以几乎没有重复。

这有助于将事件从显示/隐藏年份字段的逻辑中分离出来,并且如果这是必需条件,则更容易让您对两个事件执行不同的操作。