首页 > web前端 > js教程 > 正文

js实现精确到秒的日期选择器完整实例_javascript技巧

PHP中文网
发布: 2016-05-16 15:03:01
原创
1985人浏览过

本文实例讲述了js实现精确到秒的日期选择器。分享给大家供大家参考,具体如下:


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

96

97

98

99

100

101

102

103

104

105

106

107

108

109

110

111

112

113

114

115

116

117

118

119

120

121

122

123

124

125

126

127

128

129

130

131

132

133

134

135

136

137

138

139

140

141

142

143

144

145

146

147

148

149

150

151

152

153

154

155

156

157

158

159

160

161

162

163

164

165

166

167

168

169

170

171

172

173

174

175

176

177

178

179

180

181

182

183

184

185

186

187

188

189

190

191

192

193

194

195

196

197

198

199

200

201

202

203

204

205

206

207

208

209

210

211

212

213

214

215

216

217

218

219

220

221

222

223

224

225

226

227

228

229

230

231

232

233

234

235

236

237

238

239

240

241

242

243

244

245

246

247

248

249

250

251

252

253

254

255

256

257

258

259

260

261

262

263

264

265

266

267

268

269

270

271

272

273

274

275

276

277

278

279

280

281

282

283

284

285

286

287

288

289

290

291

292

293

294

295

296

297

298

299

300

301

302

303

304

305

306

307

308

309

310

311

312

313

314

315

316

317

318

319

320

321

322

323

324

325

326

327

328

329

330

331

332

333

334

335

336

337

338

339

340

341

342

343

344

345

346

347

348

349

350

351

352

353

354

355

356

357

358

359

360

361

362

363

364

365

366

367

368

369

370

371

372

373

374

375

376

377

378

379

380

381

382

383

384

385

386

387

388

389

390

391

392

// 二、var bMoveable=true;

var strFrame;

document.writeln('');

strFrame='';

strFrame+='INPUT.button{BORDER-RIGHT: #63A3E9 1px solid;BORDER-TOP:

#63A3E9 1px solid;BORDER-LEFT: #63A3E9 1px solid;';

strFrame+='BORDER-BOTTOM: #63A3E9 1px solid;BACKGROUND-COLOR: #63A3E9;font-family:宋体;}';

strFrame+='TD{FONT-SIZE: 9pt;font-family:宋体;}';

strFrame+='';

strFrame+='';

strFrame+='var datelayerx,datelayery;';

strFrame+='var bDrag;';

strFrame+='function document.onmousemove()';

strFrame+='{if(bDrag && window.event.button==1)';

strFrame+=' {var DateLayer=parent.document.all.endDateLayer.style;';

strFrame+=' DateLayer.posLeft += window.event.clientX-datelayerx;';

strFrame+=' DateLayer.posTop += window.event.clientY-datelayery;}}';

strFrame+='function DragStart()';

strFrame+='{var DateLayer=parent.document.all.endDateLayer.style;';

strFrame+=' datelayerx=window.event.clientX;';

strFrame+=' datelayery=window.event.clientY;';

strFrame+=' bDrag=true;}';

strFrame+='function DragEnd(){';

strFrame+=' bDrag=false;}';

strFrame+='';

strFrame+='';

strFrame+='';

strFrame+='';

strFrame+='';

strFrame+='';

strFrame+='';

strFrame+='';

strFrame+='';

strFrame+='';

strFrame+='';

strFrame+='';

strFrame+='';

strFrame+='';

strFrame+='>';

strFrame+='';

strFrame+='';

strFrame+='';

strFrame+='';

strFrame+=' 日';

strFrame+=' 一 二';

strFrame+=' 三 四';

strFrame+=' 五 六';

strFrame+='';

strFrame+='';

strFrame+='';

var n=0; for (j=0;j'; for (i=0;i';n++;}

strFrame+='';}

strFrame+='';

for (i=35;i';

strFrame+='置空  当前  关闭 ';

strFrame+='';

strFrame+='';

strFrame+='';

strFrame+=' ';

strFrame+='' ;

strFrame+='   ';

strFrame+='' ;

strFrame+='   ';

strFrame+='' ;

strFrame+='   ';

strFrame+='';

window.frames.endDateLayer.document.writeln(strFrame);

window.frames.endDateLayer.document.close(); //解决ie进度条不结束的问题

//==================================================== WEB 页面显示部分=====================================================

var outObject;

var outButton; //点击的按钮

var outDate=""; //存放对象的日期

var bUseTime=false; //是否使用时间

var odatelayer=window.frames.endDateLayer.document.all; //存放日历对象

var odatelayer=window.endDateLayer.document.all;

//odatelayer.bUseTimeLayer.innerText="NO";

bImgSwitch();

odatelayer.bUseTimeLayer.innerHTML=bImg;

function setday(tt,obj) //主调函数

{

if (arguments.length > 2){alert("对不起!传入本控件的参数太多!");return;}

if (arguments.length == 0){alert("对不起!您没有传回本控件任何参数!");return;}

var dads = document.all.endDateLayer.style;

var th = tt;

var ttop = tt.offsetTop; //TT控件的定位点高

var thei = tt.clientHeight; //TT控件本身的高

var tleft = tt.offsetLeft; //TT控件的定位点宽

var ttyp = tt.type; //TT控件的类型

while (tt = tt.offsetParent){ttop+=tt.offsetTop; tleft+=tt.offsetLeft;}

dads.top = (ttyp=="image") ? ttop+thei : ttop+thei+6;

dads.left = tleft;

outObject = (arguments.length == 1) ? th : obj;

outButton = (arguments.length == 1) ? null : th; //设定外部点击的按钮

//根据当前输入框的日期显示日历的年月

var reg = /^(\d+)-(\d{1,2})-(\d{1,2})/; //不含时间

var r = outObject.value.match(reg);

if(r!=null){

 r[2]=r[2]-1;

 var d=new Date(r[1],r[2],r[3]);

 if(d.getFullYear()==r[1] && d.getMonth()==r[2] && d.getDate()==r[3])

 {

  outDate=d;

  parent.meizzTheYear = r[1];

  parent.meizzTheMonth = r[2];

  parent.meizzTheDate = r[3];

 }

 else

 {

  outDate="";

 }

 meizzSetDay(r[1],r[2]+1);

}

else

{

 outDate="";

 meizzSetDay(new Date().getFullYear(), new Date().getMonth() + 1);

}

dads.display = '';

//判断初始化时是否使用时间,非严格验证

//if (outObject.value.length>10)

//{

 bUseTime=true;

 bImgSwitch();

 odatelayer.bUseTimeLayer.innerHTML=bImg;

 meizzWriteHead(meizzTheYear,meizzTheMonth);

//}

//else

//{

// bUseTime=false;

// bImgSwitch();

// odatelayer.bUseTimeLayer.innerHTML=bImg;

// meizzWriteHead(meizzTheYear,meizzTheMonth);

//}

try

{

 event.returnValue=false;

}

catch (e)

{

 //此处排除错误,错误原因暂未找到。

}

}

var MonHead = new Array(12); //定义阳历中每个月的最大天数

MonHead[0] = 31; MonHead[1]= 28; MonHead[2]= 31; MonHead[3]= 30; MonHead[4]= 31; MonHead[5] = 30;

MonHead[6] =31; MonHead[7]= 31; MonHead[8]= 30; MonHead[9 = 31; MonHead[10]= 30; MonHead[11] = 31;

var meizzTheYear=new Date().getFullYear(); //定义年的变量的初始值

var meizzTheMonth=new Date().getMonth()+1; //定义月的变量的初始值

var meizzTheDate=new Date().getDate(); //定义日的变量的初始值

var meizzTheHour=new Date().getHours(); //定义小时变量的初始值

var meizzTheMinute=new Date().getMinutes();//定义分钟变量的初始值

var meizzTheSecond=new Date().getSeconds();//定义秒变量的初始值

var meizzWDay=new Array(37); //定义写日期的数组

document.onclick = (function(){

with(window.event)

{

 if (srcElement != outObject && srcElement != outButton)

 closeLayer();

}

})

document.onkeyup = (function(){

if (window.event.keyCode==27){

 if(outObject)outObject.blur();

 closeLayer();

}

else if(document.activeElement)

{

 if(document.activeElement != outObject && document.activeElement != outButton)

 {

  closeLayer();

 }

}

})

function meizzWriteHead(yy,mm,ss) //往 head 中写入当前的年与月

{

odatelayer.meizzYearHead.innerText = yy + " 年";

odatelayer.meizzMonthHead.innerText = format(mm) + " 月";

//插入当前小时、分

odatelayer.meizzHourHead.innerText=bUseTime?(meizzTheHour+" 时"):"";

odatelayer.meizzMinuteHead.innerText=bUseTime?(meizzTheMinute+" 分"):"";

odatelayer.meizzSecondHead.innerText=bUseTime?(meizzTheSecond+" 秒"):"";

}

function tmpSelectYearInnerHTML(strYear) //年份的下拉框

{

if (strYear.match(/\D/)!=null){alert("年份输入参数不是数字!");return;}

var m = (strYear) ? strYear : new Date().getFullYear();

if (m  9999) {alert("年份值不在 1000 到 9999 之间!");return;}

var n = m - 50;

if (n  9999) n = 9974;

var s = " \r\n";

var selectInnerHTML = s;

for (var i = n; i " + i + "" + "\r\n"; }

 else { selectInnerHTML += "" + i + "" + "\r\n"; }

}

selectInnerHTML += "";

odatelayer.tmpSelectYearLayer.style.display="";

odatelayer.tmpSelectYearLayer.innerHTML = selectInnerHTML;

odatelayer.tmpSelectYear.focus();

}

function tmpSelectMonthInnerHTML(strMonth) //月份的下拉框

{

if (strMonth.match(/\D/)!=null){alert("月份输入参数不是数字!");return;}

var m = (strMonth) ? strMonth : new Date().getMonth() + 1;

var s = "   \r\n";

var selectInnerHTML = s;

for (var i = 1; i "+i+"月"+"\r\n"; }

 else { selectInnerHTML += ""+i+"月"+"\r\n"; }

}

selectInnerHTML += "";

odatelayer.tmpSelectMonthLayer.style.display="";

odatelayer.tmpSelectMonthLayer.innerHTML = selectInnerHTML;

odatelayer.tmpSelectMonth.focus();

}

/***** 增加 小时、分钟 ***/

function tmpSelectHourInnerHTML(strHour) //小时的下拉框

{

if (!bUseTime){return;}

if (strHour.match(/\D/)!=null){alert("小时输入参数不是数字!");return;}

var m = (strHour) ? strHour : new Date().getHours();

var s = "\r\n";

var selectInnerHTML = s;

for (var i = 0; i "+i+"\r\n"; }

 else { selectInnerHTML += ""+i+"\r\n"; }

}

selectInnerHTML += "";

odatelayer.tmpSelectHourLayer.style.display="";

odatelayer.tmpSelectHourLayer.innerHTML = selectInnerHTML;

odatelayer.tmpSelectHour.focus();

}

function tmpSelectMinuteInnerHTML(strMinute) //分钟的下拉框

{

if (!bUseTime){return;}

if (strMinute.match(/\D/)!=null){alert("分钟输入参数不是数字!");return;}

var m = (strMinute) ? strMinute : new Date().getMinutes();

var s = "\r\n";

var selectInnerHTML = s;

for (var i = 0; i "+i+"\r\n"; }

 else { selectInnerHTML += ""+i+"\r\n"; }

}

selectInnerHTML += "";

odatelayer.tmpSelectMinuteLayer.style.display="";

odatelayer.tmpSelectMinuteLayer.innerHTML = selectInnerHTML;

odatelayer.tmpSelectMinute.focus();

}

function tmpSelectSecondInnerHTML(strSecond) //秒的下拉框

{

if (!bUseTime){return;}

if (strSecond.match(/\D/)!=null){alert("分钟输入参数不是数字!");return;}

var m = (strSecond) ? strSecond : new Date().getMinutes();

var s = "\r\n";

var selectInnerHTML = s;

for (var i = 0; i "+i+"\r\n"; }

 else { selectInnerHTML += ""+i+"\r\n"; }

}

selectInnerHTML += "";

odatelayer.tmpSelectSecondLayer.style.display="";

odatelayer.tmpSelectSecondLayer.innerHTML = selectInnerHTML;

odatelayer.tmpSelectSecond.focus();

}

function closeLayer() //这个层的关闭

{

var o = document.getElementById("endDateLayer");

if (o != null)

{

 o.style.display="none";

}

}

function showLayer() //这个层的关闭

{

document.all.endDateLayer.style.display="";

}

function IsPinYear(year) //判断是否闰平年

{

if (0==year%4&&((year%100!=0)||(year%400==0))) return true;else return false;

}

function GetMonthCount(year,month) //闰年二月为29天

{

var c=MonHead[month-1];if((month==2)&&IsPinYear(year)) c++;return c;

}

function GetDOW(day,month,year) //求某天的星期几

{

var dt=new Date(year,month-1,day).getDay()/7; return dt;

}

function meizzPrevY() //往前翻 Year

{

if(meizzTheYear > 999 && meizzTheYear999

&& meizzTheYear1){meizzTheMonth--}else{meizzTheYear--;meizzTheMonth=12;}

meizzSetDay(meizzTheYear,meizzTheMonth);

}

function meizzNextM() //往后翻月份

{

if(meizzTheMonth==12){meizzTheYear++;meizzTheMonth=1}else{meizzTheMonth++}

meizzSetDay(meizzTheYear,meizzTheMonth);

}

// TODO: 整理代码

function meizzSetDay(yy,mm) //主要的写程序**********

{

meizzWriteHead(yy,mm);

//设置当前年月的公共变量为传入值

meizzTheYear=yy;

meizzTheMonth=mm;

for (var i = 0; i " + meizzWDay[i] + "";

  da.title=(mm==1?12:mm-1) +"月" + meizzWDay[i] + "日";

  da.onclick=Function("meizzDayClick(this.innerText,-1)");

  if(!outDate)

  da.style.backgroundColor = ((mm==1?yy-1:yy) == new Date().getFullYear() &&

   (mm==1?12:mm-1) == new Date().getMonth()+1 && meizzWDay[i] == new Date().getDate()) ?

   "#5CEFA0":"#f5f5f5";

  else

  {

  da.style.backgroundColor =((mm==1?yy-1:yy)==outDate.getFullYear()

  &&(mm==1?12:mm-1)== outDate.getMonth() + 1 &&

  meizzWDay[i]==outDate.getDate())? "#84C1FF" :

  (((mm==1?yy-1:yy) == new Date().getFullYear() && (mm==1?12:mm-1) == new Date().getMonth()+1 &&

  meizzWDay[i] == new Date().getDate()) ? "#5CEFA0":"#f5f5f5");

  //将选中的日期显示为凹下去

  if((mm==1?yy-1:yy)==outDate.getFullYear() && (mm==1?12:mm-1)== outDate.getMonth() + 1 &&

  meizzWDay[i]==outDate.getDate())

  {

   da.borderColorLight="#FFFFFF";

   da.borderColorDark="#63A3E9";

  }

  }

 }

 else if (i>=firstday+GetMonthCount(yy,mm)) //下个月的部分

 {

  da.innerHTML="" + meizzWDay[i] + "";

  da.title=(mm==12?1:mm+1) +"月" + meizzWDay[i] + "日";

  da.onclick=Function("meizzDayClick(this.innerText,1)");

  if(!outDate)

  da.style.backgroundColor = ((mm==12?yy+1:yy) == new Date().getFullYear() &&

   (mm==12?1:mm+1) == new Date().getMonth()+1 && meizzWDay[i] == new Date().getDate()) ?

   "#5CEFA0":"#f5f5f5";

  else

  {

  da.style.backgroundColor =((mm==12?yy+1:yy)==outDate.getFullYear()

  && (mm==12?1:mm+1)== outDate.getMonth() + 1 &&

  meizzWDay[i]==outDate.getDate())? "#84C1FF" :

  (((mm==12?yy+1:yy) == new Date().getFullYear() && (mm==12?1:mm+1) == new Date().getMonth()+1 &&

  meizzWDay[i] == new Date().getDate()) ? "#5CEFA0":"#f5f5f5");

  //将选中的日期显示为凹下去

  if((mm==12?yy+1:yy)==outDate.getFullYear() && (mm==12?1:mm+1)== outDate.getMonth() + 1 &&

  meizzWDay[i]==outDate.getDate())

  {

   da.borderColorLight="#FFFFFF";

   da.borderColorDark="#63A3E9";

  }

  }

 }

 else //本月的部分

 {

  da.innerHTML="" + meizzWDay[i] + "";

  da.title=mm +"月" + meizzWDay[i] + "日";

  da.onclick=Function("meizzDayClick(this.innerText,0)"); //给td赋予onclick事件的处理

  //如果是当前选择的日期,则显示亮蓝色的背景;如果是当前日期,则显示暗黄色背景

  if(!outDate)

  da.style.backgroundColor = (yy == new Date().getFullYear() && mm == new Date().getMonth()+1

  && meizzWDay[i] == new Date().getDate())?

   "#5CEFA0":"#f5f5f5";

  else

  {

  da.style.backgroundColor =(yy==outDate.getFullYear() && mm== outDate.getMonth() + 1

  && meizzWDay[i]==outDate.getDate())?

   "#84C1FF":((yy == new Date().getFullYear() && mm == new Date().getMonth()+1

   && meizzWDay[i] == new Date().getDate())?

   "#5CEFA0":"#f5f5f5");

  //将选中的日期显示为凹下去

  if(yy==outDate.getFullYear() && mm== outDate.getMonth() + 1 && meizzWDay[i]==outDate.getDate())

  {

   da.borderColorLight="#FFFFFF";

   da.borderColorDark="#63A3E9";

  }

  }

 }

  da.style.cursor="hand"

  }

 else { da.innerHTML="";da.style.backgroundColor="";da.style.cursor="default"; }

}

}

function meizzDayClick(n,ex) //点击显示框选取日期,主输入函数*************

{

parent.meizzTheDate=n;

var yy=meizzTheYear;

var mm = parseInt(meizzTheMonth)+ex; //ex表示偏移量,用于选择上个月份和下个月份的日期

var hh=meizzTheHour;

var mi=meizzTheMinute;

var se=meizzTheSecond;

//判断月份,并进行对应的处理

if(mm12){

 yy++;

 mm=mm-12;

}

if (mm

登录后复制

以上就是js实现精确到秒的日期选择器完整实例_javascript技巧的内容,更多相关内容请关注PHP中文网(www.php.cn)!

java速学教程(入门到精通)
java速学教程(入门到精通)

java怎么学习?java怎么入门?java在哪学?java怎么学才快?不用担心,这里为大家提供了java速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号