解决:My97DatePicker 日期插件引用在PHP文件中maxDate和minDate控制失效问题

本文介绍在ThinkPHP框架下使用My97DatePicker插件时遇到的问题:无法正确限制开始日期不能大于结束日期,结束时间不能小于开始时间。文章详细记录了问题排查过程,并提供了三种解决方案。

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

开发环境:

  语言:PHP

  框架:ThinkPHP

 

问题:在引用插件My97DatePicker时,想实现:开始日期不能大于结束日期,结束时间不能小于开始时间

步骤一、查看文档官方文档http://www.my97.net/dp/demo/index.htm可以看到实现办法如下:

 

 步骤二、按照文档说明,作用于自己代码中:

<input name="start_time" type="text" id="start_time" class="Wdate" onClick="WdatePicker({dateFmt:'yyyy-MM-dd',maxDate:'#F{$dp.$D(\'end_time\')}'})"/>

<input name="end_time" type="text" id="end_time" class="Wdate" onClick="WdatePicker({dateFmt:'yyyy-MM-dd',minDate:'#F{$dp.$D(\'start_time\')}',maxDate:'{$max_end_norm}'})"/>

运行发现,maxDate和minDate控制总是失效

排查发现问题:

查看缓存Cache发现如下问题:

<input name="start_time" type="text" id="start_time" class="Wdate" onClick="WdatePicker({dateFmt:'yyyy-MM-dd',maxDate:'#F<?php echo ($dp["$D('end_time')"]); ?>'})"/>
<input name="end_time" type="text" id="end_time" class="Wdate" onClick="WdatePicker({dateFmt:'yyyy-MM-dd',minDate:'#F<?php echo ($dp["$D('start_time')"]); ?>',maxDate:'<?php echo ($max_end_norm); ?>'})"/>

可以看到maxDate和minDate内容全部被当做PHP变量<?php echo ($dp["$D('end_time')"]); ?>和<?php echo ($dp["$D('start_time')"]); ?>编译输出了,而我们想要的结果是作为常量;

 

解决办法:

方法1.在标签的{$之间增加一个空格,让php标签无效参考链接 (推荐方法)

例如:{$name}  修改成:{ $name}

 

方法2.改变默认的开始标记和结束标记 参考链接 

'TMPL_L_DELIM'=>'<{',

'TMPL_R_DELIM'=>'}>',

 

方法3.可以使用literal标签来防止模板标签被解析 参考链接  

 <literal>{$name}</literal>

 

以上自己遇到的问题及解决办法;

转载于:https://www.cnblogs.com/wenzheshen/p/7155899.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值