My97DatePicker时间日期控件设置,开始时间--结束时间

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了My97DatePicker时间日期控件设置,开始时间--结束时间相关的知识,希望对你有一定的参考价值。

用My97DatePicker控件 有一个开始时间和结束时间 ,选择结束时间不能小于开始时间,

例如:开始时间:2013-3-22 结束时间不能选择比开始时间小,只能选择2013-3-22如以后包括2013-3-22
请大神解答,请给出My97DatePicker 验证时间代码 并且验证有alert弹出框提示用户。

请大神赐教!在线等。

参考技术A 晕,你这问题在My97DatePicker 说明文档上已有说明,比如要选一个大于2013-3-22号的日期
<input id="d411" class="Wdate" type="text" onfocus="WdatePicker(skin:'whyGreen',minDate:'2013-03-22',maxDate:'2020-12-20')"/>
我这个加上了不能超过'2020-12-20'的限制.
My97DatePicker 主页说明文档地址: http://www.my97.net/dp/demo/index.htm
看下[功能及示例]
至于弹出alert 就不用了吧,用户使用时还弹了个对话框很烦人的
不过用jquery 是可以很容易达到这个效果的代码如下:
$(function ()
$("#d411").change(function ()
var aa = $(this).val().split("-");
var DateVal = new Date(aa[0], aa[1], aa[2]);
if (DateVal < new Date(2013, 3, 22))
alert("时间小于2013-3-22");

);
);本回答被提问者采纳

在执行自定义验证之前,MFC初始化日期时间选择器控件

我有一个带有两个日期时间控件的对话框,其格式设置为time。一个表示开始时间,另一个表示结束时间。

其中一个要求是开始时间不能超过结束时间,结束时间不能早于开始时间。

因此,我通过SetTime()函数提前一小时将结束时间初始化为当前时间。

我的问题是我正在初始化OnInitDialog()方法中的两个控件,但是DoDataExchange()OnInitDialog()函数之前运行,因此开始时间和结束时间完全相同,这导致我的验证失败并且对话框没有被创建。日期的检查是在我改编自here的自定义验证器中完成的

如何才能首先初始化日期时间控件?或者我可能没有正确地接近这个或者是否有我遗漏的东西?

OnInitDialog()

BOOL CNewManualEntryDlg::OnInitDialog()
{
    CDialogEx::OnInitDialog();

    m_dtStartTime.SetRange(&GetTodayTimeMin(), &GetTodayTimeMax());
    m_dtEndTime.SetRange(&GetTodayTimeMin(), &GetTodayTimeMax());

    m_dtEndTime.SetTime(&SetEndTimeOneHourAhead());

    return TRUE;
}

上面的函数只返回一个CTime对象。作为参考,验证器如下所示:

void CNewManualEntryDlg::TimePickerValidation(CDataExchange* pDX)
{
    CTime startTime;
    CTime endTime;
    m_dtStartTime.GetTime(startTime);
    m_dtEndTime.GetTime(endTime);

    BOOL isStartTimeBehindEndTime = startTime > endTime;
    CString errorMsg;
    if (!isStartTimeBehindEndTime)
    {
        errorMsg += "Error - Start time cannot be ahead of end time
";
    }
    if (!errorMsg.IsEmpty())
    {
        ::AfxMessageBox(errorMsg);
        pDX->Fail();
        return;
    }

}

而我只是在DoDataExchange()中称它为:

void CNewManualEntryDlg::DoDataExchange(CDataExchange* pDX)
{
   CDialogEx::DoDataExchange(pDX);

   DDX_Control(pDX, IDDT_STARTTIMEPICKER, m_dtStartTime);
   DDX_Control(pDX, IDDT_ENDTIMEPICKER, m_dtEndTime);

   TimePickerValidation(pDX);
}
答案

你总是在做验证。始终意味着,在将数据加载到对话框中以及提交数据时,您正在执行验证。

DoDataExchange()被称为两种方式。您可以确定pDX->m_bSaveAndValidate以检查您是否处于保存阶段。

if (pDX->m_bSaveAndValidate)
   TimePickerValidation(pDX);

以上是关于My97DatePicker时间日期控件设置,开始时间--结束时间的主要内容,如果未能解决你的问题,请参考以下文章

my97datepicker日期控件的宽度高度如何设置呢?

My97DatePicker设置,包括隐藏 清空,设置最大日期等 转载

html My97 DatePicker设置开始日期不能大于结束日期

根据条件决定My97DatePicker日期控件弹出的日期格式

my97日期控件有效日期设置问题

jquery 日期控件datepicker属性详细解析