问一个日期的问题

wulinbazhu 2011-08-09 09:20:50
我要做两个下拉框第一个里放年,第二个放月,只能选择一年的时间
例如现在是七月份,年下拉框里只能是2010和2011,月下拉框里从去年的八月到现在的七月这十二个月,根据系统时间变化

谢谢哪位可以指点下
...全文
230 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
班门弄斧 2011-08-09
  • 打赏
  • 举报
回复
有时间写了一个楼主你要的,关键你先去自己下载一个WdatePicker日期控件

<html>
<head>

<title>test</title>
<script language="javascript" type="text/javascript" src="My97DatePicker/WdatePicker.js"></script>
</head>

<body>
年<input id="yy" type="text" onfocus="WdatePicker({minDate:'{%y-1}-%M-%d',maxDate:'%y-%M-%d',dateFmt:'yyyy'})"/>--
月<input id="m" type="text" onfocus="WdatePicker({minDate:'{%y-1}-%M-%d',maxDate:'%y-%M-%d',dateFmt:'M'})"/>
</body>
</html>
班门弄斧 2011-08-09
  • 打赏
  • 举报
回复
楼主可以通过My97DatePicker这个日期控件,设置好格式即可,如你的需求只需要设置为以下格式即可

onfocus="WdatePicker({minDate:'{%y-1}-%M-%d',maxDate:'%y-%M-%d'})"
班门弄斧 2011-08-09
  • 打赏
  • 举报
回复

<html>
<head>

<title>测试--只能选择之前一年之内的时间</title>
<script language="javascript" type="text/javascript" src="Ext/My97DatePicker/WdatePicker.js"></script>
</head>

<body>
<input class="Wdate" type="text" onfocus="WdatePicker({minDate:'{%y-1}-%M-%d',maxDate:'%y-%M-%d'})"/>
</body>
</html>
乌镇程序员 2011-08-09
  • 打赏
  • 举报
回复
这里取的是客户端时间,安全点的做法应该取服务器端时间,PHP版:
var d = new Date('<?php echo date("Y/m/d"); ?>');
如此疲惫 2011-08-09
  • 打赏
  • 举报
回复

结贴 给分
wulinbazhu 2011-08-09
  • 打赏
  • 举报
回复
兄弟刚学不会写 见笑
如此疲惫 2011-08-09
  • 打赏
  • 举报
回复
兄弟 你没发现 这里面不可能出现明年的,,,

你看2010年 最大是12月对不?那最近一年就是2010年(年下拉框就放2010)
其他的月份 比如11月 10月 5月 ,。,那最近一年的坑定是包含今年和去年了(2010 2009)

所以很简单啊 你判断月份只要是12月份 那就年下拉框写今年的年份就好了
如果是小于12月(不可能大于12吧 呵呵) 那就写今年和去年(年下拉框写)

月的下拉框 永远是1到12就好了
乌镇程序员 2011-08-09
  • 打赏
  • 举报
回复
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>无标题文档</title>
<script type="text/javascript">
window.onload = function() {
var d = new Date();
var y = d.getFullYear();
var YM = {};
var ar_m = [];
for (m = d.getMonth() + 1; m >= 1; m --) ar_m.push(m);
YM[y] = ar_m;
if(d.getMonth() != 11) {
y --;
ar_m = [];
for(var i = 11 - d.getMonth(), m = 12; i > 0; m --, i --) ar_m.push(m);
YM[y] = ar_m;
}
var opt_y = '';
var opt_m = '';

y = d.getFullYear();
for(var x in YM) {
opt_y += '<option value="' + x + '"';
if (x == y) opt_y += ' selected="selected"';
opt_y += '>' + x + '年' + '</option>';
}
for(var i = 0; i < YM[y].length; i ++) {
opt_m += '<option value="' + YM[y][i] + '"';
if (YM[y][i] - 1 == d.getMonth()) opt_m += ' selected="selected"';
opt_m += '>' + YM[y][i] + '月' + '</option>';
}

document.getElementById('y').innerHTML = opt_y;
document.getElementById('m').innerHTML = opt_m;

document.getElementById('y').onchange = function() {
var y = this.value;
var ar = YM[y];
var opt_m = '';
for(var i = 0; i < ar.length; i ++) opt_m += '<option value="' + ar[i] + '">' + ar[i] + '月' + '</option>';
document.getElementById('m').innerHTML = opt_m;
}
}
</script>
</head>

<body>
<select id="y"></select><select id="m"></select>
</body>
</html>
如此疲惫 2011-08-09
  • 打赏
  • 举报
回复
JS写还是asp.net控件?
wulinbazhu 2011-08-09
  • 打赏
  • 举报
回复
只能查询最近一年的数据,现在是2011年最近一年是从2010.8---2011.7这就是现在允许查询的日期,
月份吗可以从1到12无所谓了,兄弟们谁帮我谢谢啊
如此疲惫 2011-08-09
  • 打赏
  • 举报
回复
例如现在是七月份,年下拉框里只能是2010和2011,月下拉框里从去年的八月到现在的七月这十二个月,根据系统时间变化

楼主这段的逻辑是什么意思 2010年7月 年里面是2010和2011?只能出现今年和明年 是这个意思嘛(年里面只能包含今年和比当前年多一年这两个年份?是这个意思嘛?)

去年的八月到现在的七月
就是当前的月份向前推12个月(既然是12个月 那月的下拉框怎么变 也永远是 1月 2月 3月。。。这些啊 你的意思就是变革顺序么? 12月 11月 10月 、、、、、8月?这个意思嘛?)
MuBeiBei 2011-08-09
  • 打赏
  • 举报
回复
[Quote=引用楼主 wulinbazhu 的回复:]
我要做两个下拉框第一个里放年,第二个放月,只能选择一年的时间
例如现在是七月份,年下拉框里只能是2010和2011,月下拉框里从去年的八月到现在的七月这十二个月,根据系统时间变化

谢谢哪位可以指点下
[/Quote]

你可以用ajax直接从后台返回数据

或者在前台直接生成~·要是生成的话,就得根据你的需求进行判断了~·然后再生成
springforxsh 2011-08-09
  • 打赏
  • 举报
回复

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title> 日期 </title>
<script type="text/javascript">
(function InitSelect(){
RequstObj = {
init : init,
changeMonth : changeMonth
}
//通过ID获得控制
function $(id){
return document.getElementById(id);
}

//往Select中添加Option选项
function addOption(val01,id){
for(var i = 0; i < val01.length; i++){
var option = document.createElement("option");
option.text = val01[i];
id.add(option);
}
}
var year;//存储年份
var month;//存储月份
//初始化
function init(){
var date = new Date();
year = date.getFullYear();
month = date.getMonth() + 1;
addOption([year-1,year],$("s_year"));
changeMonth();
}
//移除Select中的Option
function removeSelectOption(id){
for(var i=id.length - 1;i>-1;i--){
id.remove(i);
}
}
//通过年份改变相应的月份
function changeMonth(){
var y = $("s_year");
var monthes = [];
if(y.options[y.selectedIndex].text == year){
for(var i = 1,j = 0; i <= month; i++,j++){
monthes[j] = i;
}
}else if(y.options[y.selectedIndex].text == (year - 1)){
for(var i = month + 1,j=0; i <= 12; i++,j++){
monthes[j] = i;
}
}
var m = $("s_month");
removeSelectOption(m);
addOption(monthes,m);
}
})();
</script>
</head>

<body onload="RequstObj.init();">
<select id="s_year" onchange="RequstObj.changeMonth()"></select>
<select id="s_month"></select>
</body>
</html>
springforxsh 2011-08-09
  • 打赏
  • 举报
回复

roffer 2011-08-09
  • 打赏
  • 举报
回复
不用自己些代码,有一个现成的js日期控件,你在网上搜这个:My97DatePicker日期控件4.7

页面一个input标签,加上onClick="WdatePicker({dateFmt:'yyyy-MM-dd',readOnly:true,minDate:'%y-%M-%d',maxDate:'%y-{%M+12}-%d'})"
%y表示当前,%M表示当前月 ... %M+12表示明年的这个月份,可以查查这个日期控件的帮助文档

87,989

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧