formvalidator无法验证时间插件返回的数据解决办法
web jQuery 2018-12-27 2017 0
关于本站

“最难不过坚持”

本人承接扒站仿站,php网站维护,病毒查杀,网站编辑,网站改版,html制作

有需要网站维护,改版,病毒查杀,网站编辑,网站备案,html制作等相关的工作可以联系我。
本人有多年相关工作经验,也可提供免费咨询,交个朋友。
有需要探讨问题的朋友,也可以加我微信,共同探讨!
微信:15011482830 QQ:408917339

6441369 2612 39
最新评论
https://jueru.net/
评 留言
:weixiao:
评 留言
:shuijiao: :weiqu: :zhenbang: :leng:
评 留言
:yiwen: :yiwen: :yiwen: :yiwen:
评 EasySass: could not generate CSS file. See Output panel for details.
这个业务逻辑多少都有点奇怪了,阅读浏览次数增值在新闻详情页的控制器方法里setInc,这怎么还写进模型事件里了。如果非要用onAfterRead也可以,把新闻文章的内容单独分出来一个news_content表,然后把它和news做关联,然后给news_content表的onAfterRead事件做增值处理,这样点进新闻页内查询到文章内容时才会触发它。
评 TP6模型事件-查询后onAfterRead不好用
文章标签更多
ThinkPHP (254)
Mysql (58)
DedeCms (33)
jQuery (67)
证件照 (1)
setInc (4)
setDec (4)
onclick (5)
打开边栏(ESC) 关闭边栏(ESC)

我用的laydate.js时间选择框,选择时间后,用formvalidator验证,时间input还提示为空,后来在网上搜索,原因是,选择时间后,时间input,没有获得焦点,所以在不获得焦点的时候formvalidator就无法验证时间数据,就会造成,明明已经选择了时间,但是formvalidator还是提示,时间未添加。

所以,只要想办法在选择时间之后,让时间input获得焦点就可以

代码如下:


<!--验证部分-->
<script>
$(function () {
	$("#StartDate").formValidator({empty:false,onFocus:"请选择开始时间"}).inputValidator({min:1,onError: "请选择开始时间"});
	$("#EndDate").formValidator({empty:false,onFocus:"请选择结束时间"}).inputValidator({min:1,onError: "请选择结束时间"});
});
</script>
<!--html部分-->
<tr>
	 <th align='right'>开始日期<font color='red'>*</font>:</th>
	 <td>
	 <input type='text' id='StartDate' name='StartDate'  value=''/> 
	 </td>
   </tr>
   <tr>
	 <th align='right'>结束日期<font color='red'>*</font>:</th>
	 <td>
	 <input type='text' id='EndDate' name='EndDate' value=''/> 
	 </td>
   </tr>
<!--日期初始化部分-->
<script>
!function(){
	laydate.skin('molv');//切换皮肤,请查看skins下面皮肤库
	//日期范围限制
	var start = {
		elem: '#StartDate',
		format: 'YYYY-MM-DD',
		//min: laydate.now(), //设定最小日期为当前日期
		max: '2099-06-16', //最大日期
		istime: false,
		istoday: false,
		choose: function(datas){
			 end.min = datas; //开始日选好后,重置结束日的最小日期
			 end.start = datas //将结束日的初始值设定为开始日
			 $("#StartDate").focus();//选择日期后,日期框获得焦点,解决即使选择了日期formValidator还是验证为空的问题
			 $("#StartDate").blur();//获得焦点后,再失去焦点,完成formValidator验证
		}
	};
	var end = {
		elem: '#EndDate',
		format: 'YYYY-MM-DD',
		//min: laydate.now(),
		max: '2099-06-16',
		istime: false,
		istoday: false,
		choose: function(datas){
			start.max = datas; //结束日选好后,充值开始日的最大日期
			$("#EndDate").focus();
			$("#EndDate").blur();
		}
	};
	laydate(start);
	laydate(end);
}();
</script>
重点就是选择日期后,触发的这一部分


choose: function(datas){
$("#StartDate").focus();//选择日期后,日期框获得焦点,解决即使选择了日期formValidator还是验证为空的问题
$("#StartDate").blur();//获得焦点后,再失去焦点,完成formValidator验证
}


贴一下网友的解决办法,时间插件不一样


phpcms v9中formvalidator无法验证时间插件返回的数据解决办法
在phpcms中,会引用formvalidator来验证表单,会用 Dynarch Calendar来做时间插件,但是当这两种结合起来的时候,就会出现一个问题

问题是这样的,当选择input时间框的时候,弹出日期选择层,选择完之后, Dynarch Calendar会把时间数值直接赋值给被点击的input框,但是这个input框不会获得焦点,所以在不获得焦点的时候formvalidator就无法验证时间数据,就会造成,明明已经选择了时间,但是formvalidator还是提示,时间未添加。

在找解决办法的时候,发现Dynarch Calendar官网介绍说,这个插件有一个函数叫onchange,于是我就从这个函数下手,在onchange的时候,给input框一个focus(),在添加完之后,又发现一个问题,这样写的话,在chrome中没问题,但是在ie8中会报错,因为我一个页面当中有多个日期选择,有一些是display:none的状态,这样的话,ie8中会报错。所以我就又修改了下代码

代码如下,代码所在文件在phpcms/libs/classes/form.class.php 208行附近添加

$str .= '<script type="text/javascript">
            Calendar.setup({
            weekNumbers: '.$showweek.',
            inputField : "'.$id.'",
            trigger    : "'.$id.'",
            dateFormat: "'.$format.'",
            showTime: '.$showsTime.',
            minuteStep: 1,
            onSelect   : function() {this.hide();},
            onChange : function (cal){
                  try
                {
                  document.getElementById("'.$id.'").focus();
                }
                catch(err)
                {
                   
                }
            }
            });
            
        </script>';


版权声明:本篇文章来源于网络。 来源链接

相关推荐
jquery出现Uncaught TypeError: $(...).prop is not a function问题
jQuery | 2019-08-23 6336
做全选功能的时候用到 var xz = $(this).prop("checked"); 提示: Uncaught TypeError: $(...).prop is not a function 应该是jquery版本过低造成的,更换高版本成功解决问题, jquery下载地址 http://www...
TypeError: e.indexOf is not a function解决方法
jQuery | 2020-06-23 6328
This error might be caused by jquery event aliases like .load, .unload or .error deprecated since jQuery 1.8. Look for these aliases in your code and replace them with .o...
评论:0条
评论加载中...
发表评论