3

我已经尝试过在 stackoverflow 上回答的其他问题的解决方案,但没有一个对我有用。在一个表单中,我想根据用户选择的月份更新一个月中的天数。

#DOBM是月份选择列表的 ID(DOBM 代表出生日期月份)
#DOBD是日期选择列表的 ID(DOBD 代表出生日期)
基本上,如果#DOBM值为 01,03,05,07,08, 10,12,我们在一个月内有 31 天。

这是我的代码:

if ((($('#DOBM').val() == '01'||'03'||'05'||'07'||'08'||'10'||'12'))
&& ($("#DOBD option[value='31']").length == 0)) {
    $("#DOBD").append("<option value='31'>31</option>");}

第二行代码是查看日期选择列表中是否已经存在该选项。最后一行代码是添加新选项(第 31 天),如果我们处于 31 天的一个月中并且如果选项 31 尚不存在。

该代码只是不更新​​ DOBD 选择列表。知道我做错了什么吗?

谢谢。

编辑:我是stackoverflow的新手;如果我能回答你的问题,他们都对我有很大帮助。

4

2 回答 2

7

你的 if 语句是错误的。您必须将.val()与每个值进行比较:

if($('#DOBM').val() == '01'||$('#DOBM').val() == '03'

编辑

您也可以选择使用 switch 语句:

$("#btn").on("click",function(){
    switch($("#DOBM").val())
    {
        case "01":
        case "03":
        case "05":
        case "07":
        case "08":
        $("#DOBD").append("<option value='31'>31</option>");
            break;
    }
});

JSFiddle:http: //jsfiddle.net/dRJHh/

使用数组,根据@sberry 的建议:

var vals = ['01','03', '05', '07', '08'];
$("#btn").on("click",function(){

    if(jQuery.inArray($("#DOBM").val(),vals) > -1)
    {
         $("#DOBD").append("<option value='31'>31</option>");
    }
});

jsfiddle:http: //jsfiddle.net/yhcDa/

于 2013-03-24T05:24:33.460 回答
1
var month = $('#DOBM').val();    
if ((( month == '01')||(month =='03')||(month =='05')||(month =='07')||(month =='08')||(month =='10')||(month =='12')) && ($("#DOBD option[value='31']").length == 0)) 
 {
        $("#DOBD").append("<option value='31'>31</option>");
 }

或者你也可以这样做

var month = $('#DOBM').val();
var arr = [ '01','03', '05','07', '08', '10', '12'];
if(($.inArray(month, arr) != -1) && ($("#DOBD option[value='31']").length == 0))
{
     $("#DOBD").append("<option value='31'>31</option>");
}

或者您可以直接查看每月的天数

var month = $('#DOBM').val();
var year = 2013;
if((Date(year, month, 0).getDate() == 31) && ($("#DOBD option[value='31']").length == 0)) {
    $("#DOBD").append("<option value='31'>31</option>");
}
于 2013-03-24T05:42:37.647 回答