选择一个选项后,打开HTML选择标记

时间:2013-04-22 14:43:38

标签: php javascript jquery html html-select

我有一个像这样的HTML select标签:

<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个月)时,必须出现一个新选项,其选项低于所选的一个加上一个新的选项“Now”,如上所述。这怎么可能?方法是什么?我想通过提交按钮使用这些信息。 (使用JQuery向特定的PHP文件发送GET请求&lt; - 我知道如何处理)。 我可以使用像这样的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"
    }
}

并用于第二次提交id="until_date_4months"style="display: none;"。同样对于第一次提交onchange="testValue(this);,但这只会显示提交,我只想发送以下表单的两个信息:since_date和until_date ...

2 个答案:

答案 0 :(得分: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');   
});

Here's a complete example fiddle

答案 1 :(得分: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/