【问题标题】:jQuery-Validation-Engine validation between start-date and end-date开始日期和结束日期之间的 jQuery-Validation-Engine 验证
【发布时间】:2013-03-08 05:50:01
【问题描述】:

我使用 jQuery Validation Engine 进行表单验证,这里是演示链接:

https://github.com/posabsolute/jQuery-Validation-Engine

我有两个文本框,一个是开始日期,第二个是结束日期。我想验证 start-date 不得大于 end-dateend-date 不得小于 start-date

如果有任何验证,请告诉我。

【问题讨论】:

    标签: jquery jquery-validation-engine


    【解决方案1】:

    将值转换为Date 对象。然后你可以用它来比较,例如。转换成 Unix 时间戳什么的……

    有关Date:https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Date的更多信息,请参见此处

    编辑:我将提供更多关于我的意思的信息....在 jQuery Validation Engine 页面的 Validators 部分下,查找其中的部分它描述了 funcCall[methodName]

    funcCall[methodName] - 使用第三方函数调用验证字段。如果发生验证错误,该函数必须返回一条错误消息,该错误消息将自动显示在错误提示中。

    因此,您可以将函数处理程序附加到该字段,该函数将获取日期然后进行比较。

    <input value="" class="validate[required,funcCall[checkDates]]" type="text" id="startdate" name="startdate" />
    <input value="" class="validate[required,funcCall[checkDates]]" type="text" id="enddate" name="enddate" />
    

    在页面某处,你有 JavaScrip 函数:

    var checkDates = function(field, rules, i, options) {
        // Do your date comparisons here between startdate and enddate values
    };
    

    编辑#2

    还有:

    过去[现在,日期或另一个元素的名称] - 检查元素的值(隐含的日期)是否早于给定日期。当使用“NOW”作为参数时,将在浏览器中计算日期。当使用“#field name”(“#”是可选的)时,它将元素的值与同一表单中另一个元素的值进行比较。请注意,这可能与服务器日期不同。日期使用 ISO 格式 YYYY-MM-DD

    future[NOW, a date or another element's name] - 检查元素的值(隐含的日期)是否大于给定的日期。当使用“NOW”作为参数时,将在浏览器中计算日期。当使用“#field name”(“#”是可选的)时,它将元素的值与同一表单中另一个元素的值进行比较。请注意,这可能与服务器日期不同。日期使用 ISO 格式 YYYY-MM-DD

    如果这符合您的喜好,以下是标记:

    <input value="" class="validate[required,past[#enddate]]" type="text" id="startdate" name="startdate" />
    <input value="" class="validate[required,future[#startdate]]" type="text" id="enddate" name="enddate" />
    

    【讨论】:

    • 希望对您有所帮助,请给我投反对票:(我最初是用手机回答这个问题的,输入一堆代码并不容易。
    【解决方案2】:

    试试这个:

    <input  class="validate[dateRange[group]]" type="text" id="date1">
    <input  class="validate[dateRange[group]]" type="text" id="date2">
    

    【讨论】:

      【解决方案3】:

      在 Jquery UI 中使用日期范围。请参考http://jqueryui.com/datepicker/#date-range

      【讨论】:

        【解决方案4】:

        即使为时已晚,我也有一个简单的答案,可能会对其他人有所帮助。您可以在此处获取有关 jQuery Validation Engine 的注释,这将是您问题的更好解决方案,

        https://github.com/posabsolute/jQuery-Validation-Engine

        您可以在 HTML 源代码中使用 futurenow 验证器来启用验证。

        例如,

        如果您有两个具有id 属性的文本框,分别为start_dateend_date,则可以按如下方式使用验证器:

        <input value="" class="validate[required,custom[date]]" type="text" id="start_date" name="start_date" />
        
        <input value="" class="validate[required,custom[date],future["#start_date"],now["#start_date"]]" type="text"  id="end_date" name="end_date"  />
        

        然后在基于语言环境的验证引擎文件中,将所需的消息放在future 验证器上,以在验证时显示验证消息。

        希望对你有所帮助。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2018-01-31
          • 1970-01-01
          • 2015-09-29
          • 2022-01-06
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多