0

こんにちは、これはトリッキーです :)

この方法で選択フォームフィールドを作成するjsonオブジェクトがあります:

for(var i = 0; i < jsonData.vpcourse[0].items.length; i++) {
    $('#kw').append('<option value="'+jsonData.vpcourse[0].items[i].datum+'">'+jsonData.vpcourse[0].items[i].datum+'</option>');
    console.log(jsonData.vpcourse[0].items[i].datum);
}

私の問題:追加される最後のオプションが選択されていますが、実際の日付がどの日付範囲であるかを選択するオプションが必要です:

<option value="07.10.2013-01.11.2013">07.10.2013-01.11.2013</option>
<option value="09.09.2013-04.10.2013">09.09.2013-04.10.2013</option>
<option value="12.08.2013-06.09.2013">12.08.2013-06.09.2013</option>
<option value="15.07.2013-09.08.2013" selected="selected">15.07.2013-09.08.2013</option>
<option value="17.06.2013-12.07.2013">17.06.2013-12.07.2013</option>
<option value="20.05.2013-14.06.2013">20.05.2013-14.06.2013</option>
<option value="22.04.2013-17.05.2013">22.04.2013-17.05.2013</option>
<option value="25.03.2013-19.04.2013">25.03.2013-19.04.2013</option>

たとえば、実際の日付がその日付範囲「07.10.2013-01.11.2013」内にあるかどうかを for ループ内で直接確認し、その追加に selected="selected" を追加するのが最善の方法です。

これはなんとなくできる!?

アップデート:

for(var i = 0; i < jsonData.vpcourse[0].items.length; i++)
{

        // testDate looks like: 29.12.2014-23.01.2015
        var testDate = jsonData.vpcourse[0].items[i].datum;
        var n=testDate.split("-");
        var x = n[0].split(".");
        var y = n[1].split(".");
        var smaller = new Date(x[2], x[1], x[0]);
        var bigger = new Date(y[2], y[1], y[0]);
        var today = new Date();
    if (smaller <= today && today <= bigger) {
        $('#kw').append('<option value="'+jsonData.vpcourse[0].items[i].datum+'" selected="selected">'+jsonData.vpcourse[0].items[i].datum+'</option>');
    } else {
        $('#kw').append('<option value="'+jsonData.vpcourse[0].items[i].datum+'">'+jsonData.vpcourse[0].items[i].datum+'</option>');
    }
    //console.log(jsonData.vpcourse[0].items[i].datum);
}

Works 90% :D これを選択:

<option value="12.08.2013-06.09.2013">12.08.2013-06.09.2013</option>
<option value="15.07.2013-09.08.2013">15.07.2013-09.08.2013</option>
<option value="17.06.2013-12.07.2013" selected="selected">17.06.2013-12.07.2013</option>
<option value="20.05.2013-14.06.2013">20.05.2013-14.06.2013</option>

代わりに、後で1つのオプションにする必要があります。:(

更新 2:

それはうまくいきます、問題は私が月の変数から-1しなければならなかったことでした...

作業例:

var today = new Date();             
for(var i = 0; i < jsonData.vpcourse[0].items.length; i++)
{
        var testDate = jsonData.vpcourse[0].items[i].datum;
        var n=testDate.split("-");
        var x = n[0].split(".");
        var y = n[1].split(".");
        var smaller = new Date(x[2], x[1]-1, x[0]);
        var bigger = new Date(y[2], y[1]-1, y[0]);
    if (smaller <= today && today <= bigger) {
        $('#kw').append('<option value="'+jsonData.vpcourse[0].items[i].datum+'" selected="selected">'+jsonData.vpcourse[0].items[i].datum+'</option>');
    } else {
        $('#kw').append('<option value="'+jsonData.vpcourse[0].items[i].datum+'">'+jsonData.vpcourse[0].items[i].datum+'</option>');
    }
    //console.log(jsonData.vpcourse[0].items[i].datum);
}

ThxはLightStyleに行きます:)

4

1 に答える 1