【问题标题】:Javascript datepickerJavascript 日期选择器
【发布时间】:2011-09-20 13:47:19
【问题描述】:

我有以下javascript函数

    window.onload = function(){
        new JsDatePick({
            useMode:2,
            target:"datafield",
            dateFormat:"%d-%M-%Y"
        });
    };


<input name="fromdate" type="text" id="datafield"  /> 

<input name="todate" type="text" id="datafield"  />

当我单击 fromdate 文本字段 datepicker 显示时,当我单击 todate 文本字段 datepicker 由于 ID 相同而未显示时,它是如何克服的?

【问题讨论】:

    标签: javascript jquery date calendar


    【解决方案1】:

    实际上不能有两个具有相同 ID 的元素,这是无效的。将代码更改为使用类名,或更改第二个 datepicker 输入的 ID(例如更改为 datafield2)并在 javascript 中添加另一行:

    new JsDatePick({
      useMode:2,
      target:"datafield2",
      dateFormat:"%d-%M-%Y"
    });
    

    【讨论】:

    • 不,为了便于阅读,它是一行代码,分布在 5 行中。那么如果它是一个图书馆呢?这个库会神奇地覆盖 CSS id 的规则吗?
    • 不,但从他的经验来看,他似乎没有足够的经验来更改库的代码。我和你一起改变 id 并添加多行代码......
    【解决方案2】:

    正如您正确确定的那样,问题在于重复 ID。

    将您的代码更改为如下所示,以便为每个文本框使用不同的 ID。

      window.onload = function(){
            new JsDatePick({
                useMode:2,
                target:"fromdate",
                dateFormat:"%d-%M-%Y"
            });
                            new JsDatePick({
                useMode:2,
                target:"todate",
                dateFormat:"%d-%M-%Y"
            });
        };
    
    
    <input name="fromdate" type="text" id="fromdate"  /> 
    
    <input name="todate" type="text" id="todate"  />
    

    【讨论】:

      【解决方案3】:
       window.onload = function(){
              new JsDatePick({
                  useMode:2,
                  target:"fromdate",
                  dateFormat:"%d-%M-%Y"
              });
      new JsDatePick({
                  useMode:2,
                  target:"todate",
                  dateFormat:"%d-%M-%Y"
              });
          };
      
      
      <input name="fromdate" type="text" id="fromdate"  /> 
      
      <input name="todate" type="text" id="todate"  />
      

      如果同一页面中有2个相似的id名称,则id替换需要一次

      【讨论】:

        【解决方案4】:

        为什么不直接使用jquery ui's datepicker?然后使用

        $(function() {
            $(".datepicker" ).datepicker();
        });
        

        datepicker 类已添加到每个文本框

        <input name="fromdate" type="text" id="fromdate" class="datepicker"/> 
        <input name="todate" type="text" id="todate" class="datepicker"/>
        

        【讨论】:

        • @Krishna 什么?你知道这个答案和问题是 2 年 2 个月 14 天吗?尝试提出一个新问题。
        • 好吧,我在问新问题,但与此相关,我会在几个小时后在此处发布链接。
        • 这里我的问题是请检查一下。 stackoverflow.com/questions/20368400/… 如果你觉得有帮助,请回复我。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-10-03
        • 1970-01-01
        相关资源
        最近更新 更多