“最难不过坚持”
本人承接扒站仿站,php网站维护,病毒查杀,网站编辑,网站改版,html制作
有需要网站维护,改版,病毒查杀,网站编辑,网站备案,html制作等相关的工作可以联系我。
本人有多年相关工作经验,也可提供免费咨询,交个朋友。
有需要探讨问题的朋友,也可以加我微信,共同探讨!
微信:15011482830 QQ:408917339
- 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不好用
我用的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>';