HTML输入弹出日历问题

时间:2012-03-05 03:35:43

标签: javascript html

我正在尝试在用户点击输入字段时弹出日历控件。日历控件实际上是日历的div部分,我试图切换显示。问题是当我点击输入时,日历不会显示。但问题是,当我将输入的位置属性从“relative”更改为“fixed”时,日历会显示但相对于浏览器。我希望它相对于输入字段显示。

    <script>
    function showCalendar(startDate)
    {
        try{
            //var inputElement = document.getElementById(startDate);
            var inputElement = document.getElementsByName(startDate)[0];
            var divCalendar = document.getElementById('calendar');
            var divContent = document.getElementById('content');
            if(divCalendar.style.display == 'block')
            {
                divContent.appendChild(divCalendar);
                //inputElement.style.position='fixed';
                //divCalendar.style.position='fixed';
                divCalendar.style.display = 'none';
                //divCalendar.style.zindex = 0;
            }
            else
            {
                divCalendar.parentNode.removeChild(divCalendar);
                inputElement.appendChild(divCalendar);
                inputElement.style.position='relative';
                divCalendar.style.position='absolute';
                divCalendar.style.top=30;
                divCalendar.style.left=30;
                //divCalendar.style.zindex = 100;
                divCalendar.style.display = 'block';
            }
        }
        catch(e)
        {
            alert(e);
        }

    }
    </script>

        <body>
<div id="content">
        <table id="bookingTable">
            <tr>
                <th colspan="4">Book Rentals</th>
            </tr>
            <tr>
                <th colspan="4"><%=fileService.title%></th>
            </tr>
            <tr>
                <td style="text-align:right;">Start Date</td>
                <td style="text-align:left;">
                <input style="cursor:pointer;" type="text" name="startDate" value="" onclick="showCalendar('startDate')">
                </td>
                <td style="text-align:right;">Start Time</td>
                <td style="text-align:left;"><input type="text" name="startTime" value=""></td>
            </tr>
            <tr>
                <td style="text-align:right;">End Date</td>
                <td style="text-align:left;">
                <input style="cursor:pointer;" type="text" name="endDate" value="" onclick="showCalendar('endDate')">
                </td>
                <td style="text-align:right;">End Time</td>
                <td style="text-align:left;"><input type="text" name="endTime" value=""></td>
            </tr>
            <tr>
                <td colspan="4" style="text-align: center;">
                <input type="submit" class="button" name="submit" value="Add" />
                </td>
            </tr>
        </table>

        <div id="calendar" style="display: none;">
        Here is create a table dynamically which represent a calendar and which I am trying to toggle the display.
        </div>

</div>

1 个答案:

答案 0 :(得分:0)

尝试使用此Javascript:

<script type="text/javascript">
<!--
function toggle_visibility(id) {
var e = document.getElementById(id);
if(e.style.display == 'none')
e.style.display = 'block';
else
e.style.display = 'none';
}
//-->
</script>

按钮上的这个HTML切换日历:

onClick="toggle_visibility('calendar');"

这只是显示/隐藏ID为“calendar”的div容器。您可能必须将日历脚本本身放在div中,因为您不需要通过控件将变量传递给它。