2020-12-30

本文分享了一种在前端实现表单验证的便捷方式,通过引入jQuery插件来创建和验证动态验证码。插件提供了不同样式的验证码,并且允许用户更换验证码。在网页中加入此插件,可以增强用户体验并提高表单的安全性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

之前做表单验证一般都是网站系统自动的验证码,今天做专题页面要加前台验证就找了一个验证码的插件,感觉这个还挺方便实用的, 下面不多说,直接把插件代码分享给大家,希望对大家有用。

html代码:

css代码: #ehong-code-input{ width:42px; letter-spacing:2px; margin:0px 8px 0px 0px; } .ehong-idcode-val{ position:relative; padding:1px 4px 1px 4px; top:0px; *top:-3px; letter-spacing:4px; display:inline; cursor:pointer; font-size:16px; font-family:"Courier New", Courier, monospace; text-decoration:none; font-weight:bold; } .ehong-idcode-val0{ border:solid 1px #A4CDED; background-color:#ECFAFB; }

.ehong-idcode-val1{
border:solid 1px #A4CDED;
background-color:#FCEFCF;
}
.ehong-idcode-val2{
border:solid 1px #6C9;
background-color:#D0F0DF;
}
.ehong-idcode-val3{
border:solid 1px #6C9;
background-color:#DCDDD8;
}
.ehong-idcode-val4{
border:solid 1px #6C9;
background-color:#F1DEFF;
}
.ehong-idcode-val5{
border:solid 1px #6C9;
background-color:#ACE1F1;
}
.ehong-code-val-tip{
font-size:12px;
color:#1098EC;
top:0px;
*top:-3px;
position:relative;
margin:0px 0px 0px 4px;
cursor:pointer;
}
js代码:
(function($){
var settings = {
e : ‘idcode’,
codeType : { name : ‘follow’, len: 4},
codeTip : ‘看不清,换一组’,
inputID : ‘’
};

var _set = {
	storeLable  : 'codeval',
	store		: '#ehong-code-input',
	codeval		: '#ehong-code'
}
$.idcode = {
	getCode:function(option){
		_commSetting(option);
		return _storeData(_set.storeLable, null);
	},
	setCode:function(option){
		_commSetting(option);
		_setCodeStyle("#"+settings.e, settings.codeType.name, settings.codeType.len);

	},
	validateCode:function(option){
		_commSetting(option);
		var inputV;
		if(settings.inputID){
			inputV=$('#' + settings.inputID).val();
		}else{
			inputV=$(_set.store).val();
		}

		if(inputV == _storeData(_set.storeLable, null)){
			return true;
		}else{
			_setCodeStyle("#"+settings.e, settings.codeType.name, settings.codeType.len);
			return false;
		}
	}
};

function _commSetting(option){
	$.extend(settings, option);
}

function _storeData(dataLabel, data){
	var store = $(_set.codeval).get(0);
	if(data){
		$.data(store, dataLabel, data);
	}else{
		return $.data(store, dataLabel);
	}
}

function _setCodeStyle(eid, codeType, codeLength){
	var codeObj = _createCode(settings.codeType.name, settings.codeType.len);
	var randNum = Math.floor(Math.random()*6);
	var htmlCode=''
	if(!settings.inputID){
		htmlCode='<span><input id="ehong-code-input" type="text" maxlength="4" /></span>';
	}
	htmlCode+='<div id="ehong-code" class="ehong-idcode-val ehong-idcode-val';
	htmlCode+=String(randNum);
	htmlCode+='" href="#" οnblur="return false" οnfοcus="return false" οncοntextmenu="return false" οnclick="$.idcode.setCode()">' + _setStyle(codeObj) + '</div>' + '<span id="ehong-code-tip-ck" class="ehong-code-val-tip" οnclick="$.idcode.setCode()">'+ settings.codeTip +'</span>';
	$(eid).html(htmlCode);
	_storeData(_set.storeLable, codeObj);
}

function _setStyle(codeObj){
	var fnCodeObj = new Array();
	var col = new Array('#BF0C43', '#E69A2A','#707F02','#18975F','#BC3087','#73C841','#780320','#90719B','#1F72D8','#D6A03C','#6B486E','#243F5F','#16BDB5');
	var charIndex;
   	for(var i=0;i<codeObj.length;i++){
		charIndex = Math.floor(Math.random()*col.length);
		fnCodeObj.push('<font color="' + col[charIndex] + '">' + codeObj.charAt(i) + '</font>');
	}
	return fnCodeObj.join('');
}
function _createCode(codeType, codeLength){
   var codeObj;
   if(codeType=='follow'){
	   codeObj = _createCodeFollow(codeLength);
   }else if(codeType=='calc'){
	   codeObj = _createCodeCalc(codeLength);
   }else{
	   codeObj="";
   }
   return codeObj;
 }

 function _createCodeCalc(codeLength){
   var code1, code2, codeResult;
   var selectChar = new Array('0','1','2','3','4','5','6','7','8','9');
   var charIndex;
   for(var i=0;i<codeLength;i++){
	   charIndex = Math.floor(Math.random()*selectChar.length);
	   code1 +=selectChar[charIndex];

	   charIndex = Math.floor(Math.random()*selectChar.length);
	   code2 +=selectChar[charIndex];
   }
   return [parseInt(code1), parseInt(code2) , parseInt(code1) + parseInt(code2)] ;
 }

 function _createCodeFollow(codeLength){
   var code = "";
   var selectChar = new Array('0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z');

   for(var i=0;i<codeLength;i++){
	   var charIndex = Math.floor(Math.random()*selectChar.length);
	   if(charIndex % 2 == 0){
		   code+=selectChar[charIndex].toLowerCase();
	   }else{
		   code +=selectChar[charIndex];
	   }
   }
   return code;
 }

})(jQuery);
JQuery库文件相信大家都有,在这里就不发了,效果图如下:

### 回答1: 可以使用Python中的pandas库将时间序列数据存储到DataFrame中,然后使用pandas的to_excel()方法将其输出到Excel文件中。 首先,需要使用pandas中的date_range()函数生成时间索引,确定时间范围从2018-01-01 08:00:00到2020-12-30 00:00:00,每小时取一个值。 其次,使用pandas中的DataFrame()函数创建一个新的DataFrame并将时间索引设置为刚才生成的时间索引。 最后,使用DataFrame的to_excel()方法将其输出到Excel文件中。 代码示例如下: ``` python import pandas as pd # 生成时间索引 time_index = pd.date_range('2018-01-01 08:00:00', '2020-12-30 00:00:00', freq='H') # 创建新的DataFrame并将时间索引设置为刚才生成的时间索引 df = pd.DataFrame(index=time_index) # 输出到Excel文件 df.to_excel('output.xlsx') ``` ### 回答2: 首先,我们需要计算从2018年1月1日08:00:00到20201230日00:00:00的总小时数。我们可以使用日期时间函数来完成这个计算。 首先,计算起始日期和结束日期之间的总天数。起始日期是2018年1月1日08:00:00,结束日期是20201230日00:00:00。计算这两个日期之间的天数,可以使用以下公式: =end_date - start_date + 1 其中,"+1"是因为起始日期所占的一天也要计算在内。 接下来,计算总小时数。因为每天有24小时,所以总小时数等于总天数乘以24。公式如下: total_hours = total_days * 24 现在我们知道了从起始日期到结束日期的总小时数,我们可以使用循环来逐小时生成日期时间,并将其写入Excel文件。我们可以使用Python中的openpyxl库来实现这个功能。 首先,导入必要的库: import openpyxl from datetime import datetime, timedelta 然后,创建一个新的Excel工作簿: workbook = openpyxl.Workbook() sheet = workbook.active 接下来,设置起始日期和结束日期: start_date = datetime(2018, 1, 1, 8, 0, 0) end_date = datetime(2020, 12, 30, 0, 0, 0) 然后,用循环生成连续的日期时间,并将其写入Excel文件: current_date = start_date for i in range(total_hours): sheet.cell(row=i+1, column=1).value = current_date current_date += timedelta(hours=1) 最后,保存Excel文件: workbook.save('output.xlsx') 以上就是将2018年1月1日08:00:00到20201230日00:00:00的连续时间每小时取一个值,并输出为Excel文件的步骤。 ### 回答3: 要将2018-01-01 08:00:00到2020-12-30 00:00:00这个时间范围内每小时连续取一个值,并输出到Excel文件中,可以使用Python编程语言中的pandas和openpyxl库来实现。 首先,我们需要导入所需的库: ```python import pandas as pd from openpyxl import Workbook ``` 接下来,我们可以创建一个日期范围,从2018-01-01 08:00:00到2020-12-30 00:00:00,每小时的频率,并将其存储在一个DataFrame中: ```python start_date = pd.Timestamp('2018-01-01 08:00:00') end_date = pd.Timestamp('2020-12-30 00:00:00') date_range = pd.date_range(start=start_date, end=end_date, freq='1H') df = pd.DataFrame(date_range, columns=['Timestamp']) ``` 然后,我们可以向DataFrame中添加其他需要的列,例如年、月、日和小时: ```python df['Year'] = df['Timestamp'].dt.year df['Month'] = df['Timestamp'].dt.month df['Day'] = df['Timestamp'].dt.day df['Hour'] = df['Timestamp'].dt.hour ``` 最后,我们可以使用openpyxl库将DataFrame保存到Excel文件中: ```python output_file = 'output.xlsx' with pd.ExcelWriter(output_file, engine='openpyxl') as writer: df.to_excel(writer, index=False) ``` 完整的代码如下: ```python import pandas as pd from openpyxl import Workbook start_date = pd.Timestamp('2018-01-01 08:00:00') end_date = pd.Timestamp('2020-12-30 00:00:00') date_range = pd.date_range(start=start_date, end=end_date, freq='1H') df = pd.DataFrame(date_range, columns=['Timestamp']) df['Year'] = df['Timestamp'].dt.year df['Month'] = df['Timestamp'].dt.month df['Day'] = df['Timestamp'].dt.day df['Hour'] = df['Timestamp'].dt.hour output_file = 'output.xlsx' with pd.ExcelWriter(output_file, engine='openpyxl') as writer: df.to_excel(writer, index=False) ``` 运行这段代码将生成一个名为output.xlsx的Excel文件,其中包含从2018-01-01 08:00:00到2020-12-30 00:00:00每小时连续取一个值的数据。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值