相容 IE、 FireFox 的 javascript 日曆控制項

來源:互聯網
上載者:User

推薦相容 IE、 FireFox 的 javascript 日曆控制項
原創作者:寒羽楓(cityhunter172)
 

一、簡介與聲明

            此日曆控制項是 CSDN 網友 KimSoft  的作品:http://blog.csdn.net/kimsoft/archive/2006/05/24/753225.aspx  。介面清爽,純指令碼運行,實現了日期的回顯功能,最重要的是相容 FireFox 。
為了適應更多需求,我針對該控制項作了以下修改:
          1、返回日期的輸出格式,我改成了由使用者以參數形式指定 Style
          2、關於 IE 中 <select> 下拉框的處理,不調用隱藏,而是用<iframe>直接覆蓋
          3、不使用  //this.panel.style.visibility = "hidden"; 因為它在 FireFox 中會掩蓋之前出現過地方下面的連結文字,而是改用 this.panel.style.display = "none";
          4、新增失去焦點後,整個 WebCalendar 即隱藏

此控制項著作權歸屬於  KimSoft   ,大家在使用過程中請勿刪除文中的著作權聲明,謝謝。再次感謝  KimSoft  的開源。

二、修改後的代碼

 以下是 WebCalendar.js 修改後的源碼

<!--
var  cal;
var  isFocus = false ;  // 是否為焦點
// 以上為  寒羽楓 2006-06-25 添加的變數

// 選擇日期 → 由 寒羽楓 2006-06-25 添加
function  SelectDate(obj,strFormat)
... {
    var date = new Date();
    var by = date.getFullYear()-50;  //最小值 → 50 年前
    var ey = date.getFullYear()+50;  //最大值 → 50 年後
    cal = new Calendar(by, ey, 1,strFormat);    //初始化英文版
    cal.show(obj);
}
/**/ /**
 * 返回日期
 * @param d the delimiter
 * @param p the pattern of your date
 2006-06-25 由 寒羽楓 修改為根據使用者指定的 style 來確定;
 */
// String.prototype.toDate = function(x, p) {
String.prototype.toDate  =   function (style)  ... {
/**//*
  if(x == null) x = "-";
  if(p == null) p = "ymd";
  var a = this.split(x);
  var y = parseInt(a[p.indexOf("y")]);
  //remember to change this next century ;)
  if(y.toString().length <= 2) y += 2000;
  if(isNaN(y)) y = new Date().getFullYear();
  var m = parseInt(a[p.indexOf("m")]) - 1;
  var d = parseInt(a[p.indexOf("d")]);
  if(isNaN(d)) d = 1;
  return new Date(y, m, d);
  */
  var y = this.substring(style.indexOf('y'),style.lastIndexOf('y')+1);//年
  var m = this.substring(style.indexOf('M'),style.lastIndexOf('M')+1);//月
  var d = this.substring(style.indexOf('d'),style.lastIndexOf('d')+1);//日
  if(isNaN(y)) y = new Date().getFullYear();
  if(isNaN(m)) m = new Date().getMonth();
  if(isNaN(d)) d = new Date().getDate();
  var dt ;
  eval ("dt = new Date('"+ y+"', '"+(m-1)+"','"+ d +"')");
  return dt;
}

/**/ /**
 * 格式化日期
 * @param   d the delimiter
 * @param   p the pattern of your date
 * @author  meizz
 */
Date.prototype.format  =   function (style)  ... {

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.