jquery需要很多下降

时间:2013-06-18 22:17:48

标签: jquery select

长时间学习,第一次问问...

方案: 我有一个表单,在第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/

1 个答案:

答案 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(){