How to resolve Uncaught SyntaxError: Unexpected token '==' in JQuery-UI datepicker

How to resolve Uncaught SyntaxError: Unexpected token '==' in JQuery-UI datepicker

在我的 Laravel-5.8 中,我使用 JQuery-UI 日期选择器:

< script type = "text/javascript" >
  $(document).ready(function() {

    $("#leave_days").on('keyup blur', function(e) {
      var periodval = parseInt($("#leave_days").val());
      var weekendval = parseInt($("#weekendinclusive").val());

      var startDate = $('.commencement_date');
      var endDate = $('.resumption_date');

      var dte = startDate.datepicker("getDate");

      dte.setDate(dte.getDate() + periodval);
      endDate.datepicker("setDate", dte);

    });

    $('.commencement_date').datepicker({
      dateFormat: 'dd-mm-yy',
      changeMonth: true,
      changeYear: true,
      showAnim: 'slideDown',
      duration: 'fast',
      minDate: +1,
      setDate: new Date(),
      if (weekendval == 0) {
        beforeShowDay: $.datepicker.noWeekends,
      }
      yearRange: new Date().getFullYear() + ':' + new Date().getFullYear(),
    }).datepicker('setDate', '1');

    $('.resumption_date').datepicker({
      dateFormat: 'dd-mm-yy',
      changeMonth: true,
      changeYear: true,
      showAnim: 'slideDown',
      duration: 'fast',
      minDate: +1,
      if (weekendval == 0) {
        beforeShowDay: $.datepicker.noWeekends,
      }
      yearRange: new Date().getFullYear() + ':' + new Date().getFullYear(),
      enableOnReadonly: true,
      beforeShow: function(i) {
        if ($(i).attr('readonly')) {
          return false;
        }
      }
    });
  }); <
/script>
<input type="hidden" id="weekendinclusive" class="form-control" value="0">
<div class="col-sm-4">
  <div class="form-group">
    <label>Commencement Date:<span style="color:red;">*</span></label>
    <div class="input-group">
      <div class="input-group-prepend">
        <span class="input-group-text"><i class="far fa-calendar-alt"></i></span>
      </div>
      <input type="text" id="commencement_date" class="form-control commencement_date" placeholder="dd/mm/yyyy" readonly autocomplete="off" name="commencement_date" value="{{old('commencement_date')}}">
    </div>

  </div>
</div>
<div class="col-sm-4">
  <div class="form-group">
    <label>Leave Days:<span style="color:red;">*</span></label><input type="hidden" id="leave_balance" value="0" disabled>
    <input type="text" id="leave_days" name="no_of_days" class="form-control no_of_days" placeholder="e.g. 10" value="{{old('no_of_days')}}" oninput="javascript: if (this.value.length > this.maxLength) this.value = this.value.slice(0, this.maxLength);" style="width: 100%;"
      maxlength="3" onkeyup="checkScore(this.value)" onkeypress="allowNumbersOnly(event)">
  </div>
</div>
<div class="col-sm-4">
  <div class="form-group">
    <label>Resumption Date:</label>
    <div class="input-group">
      <div class="input-group-prepend">
        <span class="input-group-text"><i class="far fa-calendar-alt"></i></span>
      </div>
      <input type="text" id="resumption_date" class="form-control resumption_date" placeholder="dd/mm/yyyy" readonly autocomplete="off" name="resumption_date" value="{{old('resumption_date')}}">
    </div>

  </div>
</div>

用户只能向 commencement_date 和 leave_days 添加输入。用户选择 commencement_date 并且当 leave_days onkeyup 时,它将 leave_days 添加到 commencement_date 以获得 resumption_date。这最初是有效的。

现在我想添加一个条件,如果weekendinclusive为0,那么它应该执行beforeShowDay: $.datepicker.noWeekends

但是我得到了这个错误:

create:842 Uncaught SyntaxError: Unexpected token '=='

它指向:

if (weekendval == 0){

在 JQuery.

我该如何解决这个问题?

谢谢

您不能使用内联 if 以这种方式有条件地设置对象属性。

这里有几个选项:

Pre-assign 选项:

var options = {
      dateFormat: 'dd-mm-yy',
      changeMonth: true,
      changeYear: true,
      showAnim: 'slideDown',
      duration: 'fast',
      minDate: +1,
      setDate: new Date(),
     yearRange: new Date().getFullYear() + ':' + new Date().getFullYear(),
};
if (weekendval == 0) {
     options.beforeShowDay = $.datepicker.noWeekends,
}
$('.commencement_date').datepicker(options).datepicker('setDate', '1');

使用Object.assign(或jquery.extend,如果你需要支持古老的浏览器):

$('.resumption_date').datepicker(Object.assign({
      dateFormat: 'dd-mm-yy',
      changeMonth: true,
      changeYear: true,
      showAnim: 'slideDown',
      duration: 'fast',
      minDate: +1,
      yearRange: new Date().getFullYear() + ':' + new Date().getFullYear(),
      enableOnReadonly: true,
      beforeShow: function(i) {
        if ($(i).attr('readonly')) {
          return false;
        }
      }
    }, weekendval == 0 ? { beforeShowDay: $.datepicker.noWeekends } : {})
).datepicker('setDate', '1');

如果使用 ES6 语法也可以写成:

$('.resumption_date').datepicker({
      dateFormat: 'dd-mm-yy',
      changeMonth: true,
      changeYear: true,
      showAnim: 'slideDown',
      duration: 'fast',
      minDate: +1,
      yearRange: new Date().getFullYear() + ':' + new Date().getFullYear(),
      enableOnReadonly: true,
      beforeShow: function(i) {
        if ($(i).attr('readonly')) {
          return false;
        }
      },
      ...(weekendval == 0 ? { beforeShowDay: $.datepicker.noWeekends } : {}))
    }, 
).datepicker('setDate', '1');