“最难不过坚持”
本人承接扒站仿站,php网站维护,病毒查杀,网站编辑,网站改版,html制作
有需要网站维护,改版,病毒查杀,网站编辑,网站备案,html制作等相关的工作可以联系我。
本人有多年相关工作经验,也可提供免费咨询,交个朋友。
有需要探讨问题的朋友,也可以加我微信,共同探讨!
微信:15011482830 QQ:408917339
- https://jueru.net/
-
- :weixiao:
-
- :shuijiao: :weiqu: :zhenbang: :leng:
-
- :yiwen: :yiwen: :yiwen: :yiwen:
-
- 这个业务逻辑多少都有点奇怪了,阅读浏览次数增值在新闻详情页的控制器方法里setInc,这怎么还写进模型事件里了。如果非要用onAfterRead也可以,把新闻文章的内容单独分出来一个news_content表,然后把它和news做关联,然后给news_content表的onAfterRead事件做增值处理,这样点进新闻页内查询到文章内容时才会触发它。
-
我用的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>';