jQuery日历记事插件SimpleCalendar(附源代码)

二期修改SimpleCalendar为日历记事插件,并修复多个bug,带农历、节假日。

一、效果图:

 

二、Simple-Calendar插件的使用方法

1、引入资源

(1). 使用日历插件前首先要引用资源:JS和CSS

  说明:由于提示需要用到弹框插件,这里选择了项目已带的插件layui。

<!--引入css-->
<link rel="stylesheet" type="text/css" href="./stylesheets/simple-calendar.css?v=1.01">
<link rel="stylesheet" type="text/css" href="../js/layui-v2.2.3/css/layui.css">

<!--引入js-->
<script type="text/javascript" src="./javascripts/jquery-2.1.4.js"></script>
<script type="text/javascript" src="../js/layui-v2.2.3/layui.js"></script>
<script type="text/javascript" src="./javascripts/simple-calendar.js"></script>
<script type="text/javascript" src="./javascripts/main.js"></script>

 

2、初始化一个日历

(1). 首先为calendar准备一个容器,可以限定容器大小。

<div id='container'></div>
<script>
    var myCalendar = new SimpleCalendar('#container');
</script>

  这样一个日历就诞生了 ^-^

 

3、配置项说明

(1). 简单的配置项:

var options = {
	width: '500px',
	height: '500px',
	language: 'CH', //语言
	showLunarCalendar: true, //阴历
	showHoliday: false, //休假-需要改js,这里没用到先禁用
	showFestival: true, //节日
	showLunarFestival: true, //农历节日
	showSolarTerm: true, //节气
	showMark: true, //标记
	realTime: true, //实时时间
	timeRange: {
		startYear: 1900,
		endYear: 2049
	},
	timeZone: "", //时区
	mark: {},
	markColor: ['#058DC7', '#50B432', '#ED561B', '#DDDF00', '#24CBE5', '#64E572', '#FF9655', '#FFF263', '#6AF9C4'],//记事的各个颜色
    main: function (year, month) {},
	theme: {
		changeAble: false,
		weeks: {
			backgroundColor: '#FBEC9C',
			fontColor: '#4A4A4A',
			fontSize: '20px'
		},
		days: {
			backgroundColor: '#ffffff',
			fontColor: '#565555',
			fontSize: '24px'
		},
		todaycolor: 'orange',
		activeSelectColor: 'orange',
		invalidDays: '#C1C0C0'
	}
}

(2). 关于数据:

当用户选择了年月后,源js会返回一个回调方法,也就是上面的main。

main: function (year, month) {
	// alert("[获取数据]" + year + "--->" + month);
	var index = -1;
	if (layer) index = layer.msg('正在查询数据......', {icon: 16, shade: 0.6});
	//@-这里获取数据:
	console.log(year + "--->" + month);

	//模拟获取数据start
	var resultObj = {}, status = ['待揽收', '已发货', '配送中', '已签收'];
	for (var i = 1; i <= 28; i++) {
		var array = [];
		var date = year + "-" + month + "-" + (i < 10 ? '0' + i : i);
		for (var num = 0; num <= i % 4; num++)
			array.push({
				title: '第' + (num + 1) + '个货区某个快递在该天需要处理的事情呀呀呀',
				name: '某区',
				ratio: (num + 1) * (num + 1) + '%',
				status: num,
				statusText: status[num]
			});
		resultObj[date] = i == 27 ? [] : array;
	}
	console.log(resultObj);
	//模拟获取数据end

	if (layer) layer.close(index);
	return resultObj;
},

其中,回调了年和月,可做成通过年和月去接口查询数据,返回格式请运行后自查。

 

4、国际化

language: 语言的话目前只支持中文和英文,分别对应'CH','EN'

如果想要加更多的语言或者更改现在的显示,可以直接更改languageData内容

 

5、节日显示配置

showLunarCalendar: true, //是否显示阴历日期
showHoliday: true,       //是否显示休假休假
showFestival: true,      //是否显示国际节日
showLunarFestival: true, //是否显示农历节日
showSolarTerm: true,     //是否显示节气
showMark: true,          //是否显示标记日期

 

6、时间范围

      这个时间范围设置的是下拉框中的年数范围

timeRange: {
    startYear: 2002,
    endYear: 2049
}

 

7、标记日期(记事)

标记日期配置只有在 showMark 为 true 时才会生效

mark: {
    '2019-11-01': []
}

这样就会在日历的对应日期上面添加标记,当鼠标停留时显示输入的信息

 

8、主题配置

theme: {
   changeAble: false,
   weeks: {
       backgroundColor: '#FBEC9C',
       fontColor: '#4A4A4A',
       fontSize: '20px',
   },
   days: {
       backgroundColor: '#ffffff',
       fontColor: '#565555',
       fontSize: '24px'
   },
   todaycolor: 'orange',
   activeSelectColor: 'orange',
}

主题配置只有在changeAble 为 true 时才会生效 weeks 设置的是星期一栏的主题,分别对应背景颜色,字体颜色,字体大小 days 设置的是日期的主题,参数同上 todaycolor 设置的是当天的日期背景颜色 activeSelectColor 设置的是鼠标滑过事件对应日期的边框颜色

 

9、事件接口说明

myCalendar.updateSize('500px', '500px');
myCalendar.addMark('2016-3-7', 'test');
myCalendar.setLanguage('EN')
myCalendar.showFestival(false);
myCalendar.showLunarCalendar(false);
myCalendar.showHoliday(false);
myCalendar.showSolarTerm(false);
myCalendar.showLunarFestival(false);
myCalendar.showMark(false);
updateSize(width,height)

 

10、其他

//关闭或者显示国际节日
showFestival(false); 
//关闭或者显示阴历日期
showLunarCalendar(false);
//关闭或者显示假期
showHoliday(false);
//关闭或者显示二十四节气
showSolarTerm(false);
//关闭或者显示阴历节日
showLunarFestival(false);
//关闭或者显示标记
showMark(false)

 

三、附件1-修复原SimpleCalendar插件的几个bug

1、农历全部都显示初undefined? 字符计算问题,s += this.nStr1[Math.floor(d % 10)];

2、修复最大最小年份的有效控制;

3、修复一个月42天6行的显示问题,并加了显示判断;

4、修复了一个格子显示不下时超长问题。

 

四、附件2-新增了功能

1、新增日历上的记事功能;

2、新增记事状态栏:

     (1). 点击状态栏显示隐藏相对的记事项;

     (2). 状态栏颜色可以配置(通过markColor数组)

3、新增对记事的弹框提示功能(layui的layer);

 

五、附件3-不足之处

1、不支持标题的条件扩展,比如我要加快递负责人筛选。

2、宽高适应度还不够。

3、休假功能不完善,都在js的文末写死了(本功能没用到,就禁用啦啦啦:showHoliday=false)

 

六、附件4-分享几个效果:

随缘进步,按需所改,按意文记,惶恐忘记,亦助他人。

七、附件5-源代码

          个人源代码:https://download.csdn.net/download/qq_26599807/11986249

         (如下载使用,请注意引入自己的相关js和css哦 ^_^)


The end......

  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 10
    评论
### 回答1: Selenium是一种用于自动化Web应用程序测试的工具,而jQuery是一种流行的JavaScript库,通过在HTML页面上使用jQuery插件,我们可以简化日期选择器的实现。以下是一个示例代码,使用Selenium和jQuery日期选择器插件来选择日期: ```python from selenium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC # 创建WebDriver实例 driver = webdriver.Chrome() # 打开页面 driver.get("http://example.com") # 等待日期选择器加载完成 wait = WebDriverWait(driver, 10) date_picker = wait.until(EC.presence_of_element_located((By.ID, "datepicker"))) # 使用jQuery的日期选择器插件选择日期 driver.execute_script("$('#datepicker').datepicker('setDate', '2022-12-31')") # 点击确认按钮 confirm_button = driver.find_element(By.ID, "confirm") confirm_button.click() # 关闭浏览器 driver.quit() ``` 以上代码使用了Selenium的WebDriver模块来操控浏览器,通过WebDriverWait来等待日期选择器的加载完成,然后使用jQuery的datepicker插件将日期设置为"2022-12-31",最后点击确认按钮。 ### 回答2: Selenium是一个自动化测试工具,用于模拟用户在网页上的操作。jQuery是一个流行的JavaScript库,用于简化操作DOM元素和处理事件的过程。日历插件是一个可以在网页上显示日历并选择日期的工具。 在使用Selenium和jQuery来测试日历插件的代码中,我们可以使用Selenium的操作方法来模拟用户在日历上进行选择日期的操作。以下是一些示例代码: 1. 导入必要的库和插件 import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; import org.openqa.selenium.JavascriptExecutor; import org.openqa.selenium.chrome.ChromeDriver; 2. 实例化WebDriver和加载网页 WebDriver driver = new ChromeDriver(); driver.get("https://www.example.com"); 3. 执行JavaScript代码来查找并点击打开日历的按钮 WebElement calendarButton = driver.findElement(By.id("calendarButtonId")); ((JavascriptExecutor)driver).executeScript("arguments[0].click();", calendarButton); 4. 执行JavaScript代码来选择特定的日期 WebElement dateElement = driver.findElement(By.xpath("//td[@data-date='2023-01-15']")); ((JavascriptExecutor)driver).executeScript("arguments[0].click();", dateElement); 5. 执行JavaScript代码来关闭日历 WebElement closeButton = driver.findElement(By.className("closeButtonClass")); ((JavascriptExecutor)driver).executeScript("arguments[0].click();", closeButton); 这些代码示例假设已经使用了正确的定位方式(例如通过id、xpath、class等)来定位到相应的元素,并且页面上存在与示例代码中使用的元素相对应的标识。如果实际情况不同,请根据实际情况进行调整。 这些代码只是一个简单的示例,具体的实现方法还取决于日历插件的具体实现和网页的结构。实际应用中可能需要更加细致的操作和处理,根据具体的需求进行相应的修改和扩展。
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值