修改了个日历控件:
以前是这样调用的 :<div ><input type="text" name="date" id="date" onblur="checkDate(this);"  onClick="setDay(this);"></div>这样没问题 
现在 呢  想给后面加个图片,点击图片才显示日历控件,代码如下:<input type="text" name="date" id='date'  onblur ="if(!checkDate(this)){alert('格式不对')};" />
<img src="date.gif"  onClick="setDay(document.getElementById('date'));"/></div>这样 日历控件反而出不来了,我就在setDay方法内部显示日历控件的地方加了个alert,这个时候日历竟然能出来,点击确定后,日历又没有了 ,哪位能告诉原有么~

解决方案 »

  1.   

    查一下 setDay中 弹出层的位置是不是根据 event发生的对象的位置来计算的?
      

  2.   

    看看我在你上一个贴的回答:上面说的方法获得input的绝对位置,再来绝对定位日历控件,这样做有一个隐患:当页面有滚动条,滚动滚轮移动页面时,日历控件不会移动,input和日立控件就“分离”了,上面shan1119兄弟的方法采用相对定位,虽然可以解决这个问题,但是日立控件占据input下面的位置,并没有实现日立控件“浮动”于input下方的功能,
    可以看看:
    <input type="text" name="date" readOnly="readOnly" onClick="setDay(this);">
    <div id=div1 style="position:relative; border:1px solid black; left:0px; top:0px; width:100px; height:100px;display:none;"></div>
      <script type="text/javascript">
        function setDay(txt){
            var div = document.getElementById("div1");
            div.style.display="block";
            div.style.left=txt.offsetWidth + 5;
            div.style.top=5;
        }
      </script>
      <div style="border:1px solid blank;">这是下面其他本内容,日历控件应该显示在这些文字之上才对</div>
    那就改改吧,让日立控件相对于 input外面的容器绝对定位:  <div style="position:relative;left:300px;border:1px solid green;">
            <input type="text" name="date" readOnly="readOnly" style="height:20px" onClick="setDay(this);">
            <div id="myDiv" style="position:absolute;left:5;top:25; width:100px;height:100px;border:1px solid red;display:none;"></div>
            <div style="border:1px solid blank;">这是下面其他本内容,日历控件应该显示在这些文字之上才对</div>
        </div>
      <script type="text/javascript">
        function setDay(txt){
            var div = document.getElementById("myDiv");
            div.style.display="block";
        }
      </script>
      

  3.   

    也就是说你的代码是执行了,只是没有停止而已,于是楼主你在alert的地方协商return,肯定日历控件就不会消失了,你这样的话,在把return注释掉,在每行后面写一次试试,看看到哪儿就不显示了,那句话就是有问题的
      

  4.   

    <input type="text" name="date" id='date' onblur ="if(!checkDate(this)){alert('格式不对')};" /> <img src="date.gif" onClick="setDay(document.getElementById('date'));"/>是不是应该,楼主可以调试一下<input type="text" name="date" id='date' />
     <img src="date.gif" onblur ="if(!checkDate(this)){alert('格式不对')};" onClick="setDay(document.getElementById('date'));"/>