【问题标题】:Jquery date validator not receiving valueJquery日期验证器没有收到值
【发布时间】:2013-12-15 17:23:40
【问题描述】:

在我将它们写入输入之后,我需要对两个日期进行验证:start_date 和 end_date。验证工作正常,但我想选择将 end_date 的值设为 null 或 0。当我在第二个输入中没有写任何内容时,它仍然给我来自 jQuery 的错误消息。你能帮帮我吗?

$.validator.addMethod("enddate", function(value, element) {
    alert(value);
    if (value != null) {
        var startdatevalue = $(".startdate").val();
        return Date.parse(startdatevalue) < Date.parse(value);
    }
}, "End date must be greater than start date!");

这是我的html:

<tr>
    <td>Start date</td>
    <td><input type="text"  id="startDate" name="startDate" class="startdate"  value="<fmt:formatDate pattern="dd.MM.yyyy" value="${List.startDate}" />"/></td>
</tr>
<tr>
    <td>End date</td>
    <td><input type="text"  id="endDate" name="endDate" class="enddate" value="<fmt:formatDate pattern="dd.MM.yyyy" value="${List.endDate}"/>"/></td>
</tr>

【问题讨论】:

  • 如果值为 null,您的验证器不会返回任何内容,因此如果您没有在第二个输入中写入任何内容,则它不会验证
  • 我认为是同一件事,而不是 id 我写的类。没有?
  • 您的 enddate html 在 javascript 中无效,如果 (value != null) 代码将测试值不是 null、未定义、0 和 '',您应该使用严格的形式,例如value !== '' - 作为输入框总是会返回一个字符串
  • @splig - 谢谢,我会这样尝试。

标签: java javascript jquery html date


【解决方案1】:

在检查 startdate 小于 enddate 之前,请确保 enddate 具有值。

【讨论】:

    【解决方案2】:

    如果为null或0需要返回一些数据

    $.validator.addMethod("enddate", function(value, element) {
        alert(value);
    
        // Valid if null or 0
        if (value == null || value == 0) {
            return true;
        }
        // else compare dates
        var startdatevalue = $(".startdate").val();
        return Date.parse(startdatevalue) < Date.parse(value);
    }, "End date must be greater than start date!");
    

    【讨论】:

    • 感谢您的提示,但这仅适用于我在 end_date 输入中不写任何内容的情况。如果我这样做了,验证不会正确执行..
    【解决方案3】:

    我找到了一种方法来验证我需要什么,以便获得 start_date

    $(document).ready(function(){
    
          $("#startDate").datepicker({
    
              dateFormat: 'dd.mm.yy',
    
              numberOfMonths: 1,
    
              onSelect: function(selected) {
    
                $("#endDate").datepicker("option","minDate", selected);
    
              }
    
          });
    
          $("#endDate").datepicker({
    
              dateFormat: 'dd.mm.yy',
    
              numberOfMonths: 1,
    
              onSelect: function(selected) {
    
                  $("#startDate").datepicker("option","maxDate", selected);
    
              }
    
          }); 
    
        });
    

    我认为其他人也可以使用此答案。 再次感谢您的回答。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-11-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多