0

长期学习,第一次问...

场景:我有一个表格,它在第 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>

编辑

根据要求:http: //jsfiddle.net/paladyn84/6dXmD/4/

4

1 回答 1

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(){
于 2013-06-18T22:36:16.443 回答