0

次のような HTML 選択タグがあります。

<select name="since_date">
    <option value="<?php $sixmonths = date('Y-m-d', strtotime('-6 months')); echo $sixmonths; ?>">6 months</option>
    <option value="<?php $fivemonths = date('Y-m-d', strtotime('-5 months')); echo $fivemonths; ?>">5 months</option>
    <option value="<?php $fourmonths = date('Y-m-d', strtotime('-4 months')); echo $fourmonths; ?>">4 months</option>
    <option value="<?php $threemonths = date('Y-m-d', strtotime('-3 months')); echo $threemonths; ?>">3 months</option>
    <option value="<?php $twomonths = date('Y-m-d', strtotime('-2 months')); echo $twomonths; ?>">2 months</option>
    <option value="<?php $onemonth = date('Y-m-d', strtotime('-1 month')); echo $onemonth; ?>">1 month</option>
</select>

そして、たとえば4か月が選択されたときに、新しい選択タグが次のように表示されるようにしたい:

<select name="until_date_4months">
    <option value="<?php $threemonths = date('Y-m-d', strtotime('-3 months')); echo $threemonths; ?>">3 months</option>
    <option value="<?php $twomonths = date('Y-m-d', strtotime('-2 months')); echo $twomonths; ?>">2 months</option>
    <option value="<?php $onemonth = date('Y-m-d', strtotime('-1 month')); echo $onemonth; ?>">1 month</option>
    <option value="<?php $now = date('Y-m-d'); echo $now; ?>">Now</option>
</select>

期間が選択されるたびに (例: 6 か月、5 か月)、選択したものよりも低いオプションと、上記のような新しいオプション「現在」を含む新しい選択が表示される必要があります。これはどのように可能ですか?アプローチは何ですか?これらの情報を送信ボタンで使用したい。(JQuery を使用して特定の PHP ファイルに GET 要求を送信します <-これは処理方法を知っています)。たとえば、次のように JavaScript を使用できます。

function sinceDateValue(selection) {
    if (selection.value == "<?php $fourmonths = date('Y-m-d', strtotime('-4 months')); echo $fourmonths; ?>") {
        document.getElementbyId(until_date_4months).style.display = "block"
    }
}

および 2 番目の送信に使用しid="until_date_4months"ますstyle="display: none;"。また、最初の送信onchange="testValue(this);ですが、これは送信を表示するだけで、フォームで2つの情報のみを送信したい: since_date と until_date...

4

2 に答える 2

1

ループを使用してオプションを動的に作成できます。

<?php for ($i = 6; $i >= 0; $i--) { ?> 
  <option value="<?php echo date('Y-m-d', strtotime('-' . $i . ' months')); ?>">
    <?php echo ($i == 0) ? 'Now' : $i . ' months'; ?>
  </option>
<?php } ?>

jQueryに関しては、選択した要素に基づいて要素を取得し、選択ボックスにそれらを入力できます。

$('select[name="since_date"]').on('change', function() {
  var newOpts = $('option:selected', this).nextAll().clone();
  $(newOpts).show().appendTo('#example');   
});

ここに完全なフィドルの例があります

于 2013-04-22T15:06:41.810 に答える
0

このような処理を行うことができます。必要なのは、オプションの正しい値を設定することだけです。

$("#one").change(function(){
    var htmlOf2 = "", d;
    for(var i=1;i<parseInt($(this).find("option:selected").text()) + 1;i++)
   {
       d = new Date();
       d = d.setMonth(d.getMonth() + (i * -1));
       // This sets the right month, but is not set as a value yet. I don't know what format you want

       htmlOf2 += "<option value=''>" + (i + " months") + "</option>";
   }
   htmlOf2 += "<option>NOW</option>";
   $("#two").html(htmlOf2);
}).trigger("change");

ライブ フィドル: http://jsfiddle.net/5qaw7/1/

于 2013-04-22T14:52:57.117 に答える