【问题标题】:Jquery adding an option to selectJquery添加一个选项来选择
【发布时间】:2013-03-13 19:01:09
【问题描述】:

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

#DOBM 是月份选择列表的 ID(DOBM 代表 Date Of Birth Month)
#DOBD 是日期选择列表的 ID(DOBD 代表 Date Of Birth Day)
基本上,如果#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 的新手;如果我能提出你的答案,他们都对我帮助很大。

【问题讨论】:

    标签: jquery select append option


    【解决方案1】:

    你的 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/

    【讨论】:

    • 或者更好的是,创建一个局部变量并在所有比较中使用它,或者使用类似 inArray 类型的函数。
    【解决方案2】:
    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>");
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-03-27
      相关资源
      最近更新 更多