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