长时间学习,第一次问问...
方案: 我有一个表单,在第1列显示日期表和日期表,第2列显示原因下拉列表。只有在选择第2列中的原因时才能提交表单。但是,并非所有行都需要原因。也就是说,如果只有第三个日期列出原因,您可以提交包含三个日期的表单。在POST上适当处理空菜单项。
提交按钮基于两个验证复选标记切换状态(我们将电话#和电子邮件作为值传递,用户选择要确认的方法)。我添加了select.val按预期工作,但只在第一个选择。如果我只选择第二个选择,则该按钮将保持禁用状态。
$('#phone, #email').click(function(){
if($('#phone, #email').is(':checked') && $('select').val() != "")
{
enableSubmit();
} else {
disableSubmit();
}
$(this).next('#phone, #email');
});
示例标记:
<select id="reason1">
<option value=""></option> <!--This defaults the field to an empty label-->
<option value="reason_a">Reason A</option>
<option value="reason_b">Reason B</option>
<option value="reason_c">Reason C</option>
</select>
<select id="reason2">
<option value=""></option> <!--This defaults the field to an empty label-->
<option value="reason_a">Reason A</option>
<option value="reason_b">Reason B</option>
<option value="reason_c">Reason C</option>
</select>
<select id="reason3">
<option value=""></option> <!--This defaults the field to an empty label-->
<option value="reason_a">Reason A</option>
<option value="reason_b">Reason B</option>
<option value="reason_c">Reason C</option>
</select>
答案 0 :(得分:1)
试试这个if
:
if($('#phone, #email').is(':checked') && $('select').filter(function(){
return $(this).find(':selected').val()
}).length)
这将检查任何下拉列表是否有值。
这里有点小提琴:http://jsfiddle.net/e7wSK/1
顺便说一句,而不是:
$('#phone, #email').click(function(){})
您应该使用更改:
$('#phone, #email, select').change(function(){