以下代码是调用日历的例子,日历在页面加载的时候就已经初始化了,当点击id="datepicker"的输入框的时候日历就会显示在其中,但这样的话是在input比较少和固定的情况下,由于页面可能有N个动态生成的input,这样就得初始化日历$( "#datepicker,#其他input id...." ).datepicker();这样的话javascript也要动态生成了,很麻烦,能不能通过 <input ... onClick='javascript:pickDate(this);'> 这样的javascript方式来调用啊?   <script>
  $(function() {
    $( "#datepicker" ).datepicker();
  });
  </script>
<body> 
<p>Date: <input type="text" id="datepicker" /></p> 
</body>

解决方案 »

  1.   

    使用onClick理论上是不行的!因为pickDate(this)是绑定日历,就算可以正常绑定那第一次点是没效果,而且你每次点都执行绑定动作。
    你不如这样做:给需要加日历的input定一个类如 class="datepicker",然后
      <script>
      $(function() {
        $(".datepicker").datepicker();
      });
      </script>
      

  2.   


    我的意思是页面加载的时候并不加载日历,pickDate(this)不是绑定日历而是第一次加载日历,并给this赋值,这样能实现吗?
      

  3.   

    <input ... onClick='javascript:pickDate(this);'>
    <script>
    function pickDate(obj){
        $(obj).datepicker();
    }
    </script>
    这可以实现呀。但你觉得这代码可行吗?
      

  4.   


    这样调用是可以出来,但是鼠标非要在input以外的地方先点击一次,然后在去点击input框才能生效,不知道是什么原因?
      

  5.   


    这样调用是可以出来,但是鼠标非要在input以外的地方先点击一次,然后在去点击input框才能生效,不知道是什么原因?
    你现在才知道会这样呀,所以我问你行吗?
    从代码上就可以看出:第一次点击input才会执行绑定日历插件,但是只是绑定哦,不会弹出来。
    第二次点击时:再次执行绑定日历插件,但是注意,因第一次绑定过,这时弹出第一次绑定的。而不是本身这次点击绑定的。换句话就是从第二次点击开始,都会多余做一次绑定。
    你觉得这合你要求吗?
      

  6.   

    综上函数改为:
        <script type="text/javascript">
            function pickDate(obj){
                if(!$(obj).data("date")){
                    $(obj).datepicker();
                    $(obj).data("date",true);
                }
                $(obj).datepicker("show");
            }
        </script>