0

我有一个包含日期在内的输入字段的表单。

以下是我的代码;

<form action="/test/" method="get" class="form-horizontal">
    <!-- truncated codes -->
    <label class="col-sm-1 control-label">Date:</label>
    <div class="col-sm-2">
        <div class="input-group m-b-none">
            <span class="input-group-addon btn btn-success btn-sm btn-outline"><i class="fa fa-calendar"></i></span>
            <input type="text" name="date" value="{{ $date }}" class="form-control start_date" id="date" autocomplete="off" required>
        </div>
    </div>
</form>

这是我的 jQuery 代码

$('.start_date').change(function () {
    var timestamp = Date.parse($("input[name='date']").val());

    if (isNaN(timestamp) == false) {
        date = $('.start_date').val();
        // call function
    } else {
        var prev = $(this).data('val');
        alert('Invalid Date');
        $('#date').val(prev);
    }
});

$('#date').datepicker({
    todayBtn: "linked",
    keyboardNavigation: false,
    forceParse: false,
    calendarWeeks: true,
    autoclose: true,
    format: 'yyyy-mm-dd'
});

我不明白为什么每次更改日期后,此功能都会运行两次。

我做错了什么,我该如何解决?

我正在使用 jQuery 版本 3.1.1 并且已经尝试

此外,我在页面中没有.start_date其他任何地方。

4

2 回答 2

0
  1. 页面中可能还有'.start_date'其他地方。

  2. 我建议你使用 off()

$('.start_date').off().change(function (){
          var timestamp =             Date.parse($("input[name='date']").val());
          if (isNaN(timestamp) == false) {
            date = $('.start_date').val();
            /*call function*/
         }
         else{
            var prev = $(this).data('val');
            alert('Invalid Date');
            $('#date').val(prev);
         }
       });

于 2019-10-02T07:19:12.730 回答
0

问题是我的引导日期选择器更改事件触发了两次。诀窍是使用 changeDate 而不是 change。

$('.start_date').on("changeDate", function() {

});
于 2019-10-02T12:02:36.103 回答