【问题标题】:Dynamic Date Select (Php/JS)动态日期选择 (Php/JS)
【发布时间】:2023-03-22 09:34:02
【问题描述】:

我在尝试访问 JavaScript 脚本中的函数时遇到问题,因此我可以根据所选月份创建一组可能的动态日期。它甚至似乎根本无法访问 JavaScript 函数“populate()”。警报没有响应。我可能应该提到整个代码是从'include_once();'调用的在另一个文件中。我试图按照以下示例进行操作:http://www.youtube.com/watch?feature=player_embedded&v=UliJeDbc4cw

<script type="text/javascript">
function populate(month,day){
    alert('Javascript Reached');
    var month = document.getElementById('month');
    var day = document.getElementById('day');

    day.innerHTML="";

    if (month.value == "Apr" ||
        month.value == "Sep" || 
        month.value == "Jun" ||
        month.value == "Nov" ||
        ){
        var limit = 30;
        }
    else if(month.value =="feb"){
        var limit = 28;
    }

    else{
        var limit = 31;
    }

    while(var temp < limit){
        var newOption = document.createElement("option");
        newOption.value = temp;
        newOption.innerHTML = temp;
        day.options.add(newOption);
        temp++;
    }

    return true;
}
</script>
<?php
adminYearOption();
adminMonthOption();
adminDayOption();

function adminYearOption(){
    echo "<select name='year'><option value=''></option>";
    while($datecount < 50){
        $currValue = (1980+$datecount);
        echo "<option value='".$currValue."'>".$currValue."</option>";
        $datecount++;
    }
    echo "</select>";
}

function adminMonthOption(){
    ?> <select id='month' name='month' onchange="return populate(this.id,'day')"><option value=''></option><?php
    $time = strtotime("2013-01-01");
    while($datecount < 12){
        $currValue = date('M',$time);
        echo "<option value='".$currValue."'>".$currValue."</option>";
        $time = strtotime("+1 month", $time);
        $datecount++;
    }
    echo "</select>";
}

function adminDayOption(){
    echo "<select id='day' name='day'></select>";
}
?>

'

对于任何其他想要创建动态日期的读者,这里有一个替代方案: http://blog.elanman.com/2009/09/create-dynamic-date-selects/ 但它每个月都有固定的天数。

我只是好奇为什么我的不起作用,我想不通。

谢谢。

【问题讨论】:

    标签: php javascript function select dynamic


    【解决方案1】:

    您可能还需要考虑闰年,它会改变二月的天数。

    首先创建列表:

    <select name="month">
        <option value="1">January</option>
        <option value="2">February</option>
        <option value="3">March</option>
        <option value="4">April</option>
        <option value="5">May</option>
        <option value="6">June</option>
        <option value="7">July</option>
        <option value="8">August</option>
        <option value="9">September</option>
        <option value="10">October</option>
        <option value="11">November</option>
        <option value="12">December</option>
    </select>
    <select name="day"></select>
    <select name="year"></select>
    

    然后用这个创建javascript:

    var ysel = document.getElementsByName("year")[0],
        msel = document.getElementsByName("month")[0],
        dsel = document.getElementsByName("day")[0]; for (var i = 2014; i>=1950; i--){
        var opt = new Option();
        opt.value = opt.text = i;
        ysel.add(opt); } ysel.addEventListener("change",validate_date); msel.addEventListener("change",validate_date);
    
    function validate_date(){
        var y = +ysel.value, m = msel.value, d = dsel.value;
        if (m === "2")  var mlength = 28 + (!(y & 3) && ((y % 100)!==0 || !(y & 15)));
        else var mlength = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31][m - 1];
        dsel.length = 0;
        for(var i=1;i<=mlength;i++){    var opt=new Option();   opt.value = opt.text = i;   if(i==d) opt.selected=true;     dsel.add(opt);
        } } validate_date();
    

    它已经完成了。您现在有一个动态日期列表,其中也考虑了闰年。
    提示:我将 javascript 放在 &lt;/html&gt; 之后,因为当我尝试将其放在 &lt;head&gt;&lt;/head&gt; 中时,它不起作用。

    【讨论】:

      猜你喜欢
      • 2020-01-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-04-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多