如何访问波斯语日期选择器 jquery 插件的 onSelect 事件中的 (this) 属性

How can I access the (this) attribute inside onSelect event of persian datepicker jquery plugin

我在 dom 中有多个 class 实例。就像下面的例子。

let element = $(".datepicker-birthdate").pDatepicker({
    observer: true,
    altField: '.observer-example-alt',
    format: 'YYYY/MM/DD',
    initialValue: false,
    autoClose: true,
    calendar:{
        'persian': {
            'locale': 'fa',
            'showHint': false
        },
        'gregorian': {
            'locale': 'en',
            'showHint': false
        }
    },
    onSelect: function (date, e){
        e: is undefine here also
        element: is the last instance of .datepicker-birthdate
    }
});

该元素总是 return 日期选择器的最后一个实例,但是我想访问我已更改的那个。 有人对此有解决方案吗?

假设 onSelect 函数没有接收事件或元素作为参数,鉴于您在问题中对它们的描述是 undefined ,这似乎是这种情况,那么您可以改为手动循环遍历 class 中的元素并分别实例化它们的日期选择器。这允许您在 select 处理程序函数中维护 this 引用:

$(".datepicker-birthdate").each(function() {
  let $datePicker = $(this);
  $datePicker.pDatepicker({
    observer: true,
    altField: '.observer-example-alt',
    format: 'YYYY/MM/DD',
    initialValue: false,
    autoClose: true,
    calendar: {
      'persian': {
        'locale': 'fa',
        'showHint': false
      },
      'gregorian': {
        'locale': 'en',
        'showHint': false
      }
    },
    onSelect: function(date) {
      // use $datepicker as needed here...
      $datePicker.addClass('foo');
    }
  });
});

事实上,库应该在 onSelect 事件中提供 this 对象,而他们没有,也许像 Rory McCrossan 描述的那样在 class 上使用 foreach 循环是最好的选择。

第一步:打开波斯语-datepicker.min.js

第二步: 替换

e.model.options.onSelect(t);

e.model.options.onSelect(t, e);

第三步: 之后:

$('').persianDatepicker({
        onSelect: function (formattedDate, e) {

           console.log($("#" + e.id).val());

        }
});