如何确定是否在表单发布上调用了日期选择器

How to determine if a datepicker was invoked on form post

本文关键字:调用 日期 选择器 何确定 是否 表单      更新时间:2023-09-26

我使用pickadate.js作为日期选择器,初始化如下:

$start_cal_input = $("#start-date-picker").pickadate({
        min: true,
        max: 30,
        editable: true,
        clear: false,
        formatSubmit: 'yyyy/mm/dd',
        hiddenName: true,
        onSet: function(e) {
        },
        onClose: function() {
            return setTimeout(function() {
                return $("#start-date-picker").blur();
            }, 200);
        },
    onStart: function() {
    }
});
HTML:

<input id="start-date-picker" name="start-date-picker" class="form-control" type="text" value="Start date">

HTML以表单的形式发送回服务器,该表单用于过滤搜索条件。如果用户实际上没有使用日期选择器调用和选择日期,则将向表单发送'yyyy/mm/dd'格式的today's today值,而不是默认值"Start date"。如果没有实际调用它,我不想按日期过滤搜索结果,但是我无法区分选择今天日期的用户和将日期保留为空并自动返回今天日期的用户。

我如何确定在表单张贴是否日期选择器被调用?

当用户没有选择任何日期时,为什么需要发送'年月日'格式的日期?

您可以使用一个简单的if else语句来知道日期是否被选中。示例如下

if(date is empty or is a default value) {
    do some thing
}else {
    do some other thing
}

这样就可以知道用户是否选择了日期。最重要的是,服务器将无法检查javascript是否被执行,除非你在表单中设置了一个标志或一个值。我想说的是,有很多方法可以做到这一点,你只需要了解它:)

编辑

隐藏这个额外的输入类型。

<input type="hidden" name="isdateselected" id="myDateFlag" value="false" />

onSet: function(context) {
    document.getElementById("myDateFlag").value="true";
}

现在您可以使用isdateselected参数来检查是否选择了日期。如果被选中,则为true,否则为false