Jquery添加一个选项

时间:2013-03-24 05:20:51

标签: jquery select append option

我已经尝试过在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的新手;如果我能得到你的答案,他们都帮助了我很多。

2 个答案:

答案 0 :(得分: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/

答案 1 :(得分: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>");
}