3

stackoverflow で回答された他の質問の解決策を試しましたが、どれもうまくいきませんでした。フォームでは、ユーザーが選択した月に応じて月の日数を更新したいと考えています。

#DOBMは月選択リストの ID (DOBM は Date Of Birth Month を表します)
#DOBDは日選択リストの ID (DOBD は Date Of Birth Day を表します)
基本的に、#DOBM値が 01,03,05,07,08 の場合、 10,12、1 か月は 31 日です。

これが私のコードです:

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

コードの 2 行目は、オプションが日選択リストに既に存在するかどうかを確認するためのものです。コードの最後の行は、1 か月が 31 日で、オプション 31 がまだ存在しない場合に、新しいオプション (31 日目) を追加することです。

このコードは、DOBD 選択リストを更新しないだけです。私が間違っていることについて何か考えはありますか?

ありがとう。

編集:私はスタックオーバーフローが初めてです。私があなたの答えを上げることができれば、どちらも私を大いに助けてくれました.

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 に答える