使用本机 Web 组件将日期选择器作为自定义日历

发布于 2025-01-19 06:39:26 字数 1518 浏览 0 评论 0原文

我想使用本机Web来拥有自定义日历。我创建了JS文件,并编写了一些扩展HTMlelement的类。日历正确弹出,但问题是我无法在日历中选择一天。当我尝试选择一个日期时,它会引发此异常:“此datepicker的丢失实例数据”。

我的代码看起来像这样:

class CustomCalendar extends HTMLElement {
  constructor() {
    super();
    let shadowRoot = this.attachShadow({mode: 'open'});

    const wrapper = document.createElement('div');

    wrapper.setAttribute('class', 'wrapper');

    const calendarInputLabel = wrapper.appendChild(document.createElement('label'));
    calendarInputLabel.setAttribute('class', 'date-label');

    const iconImg = calendarInputLabel.appendChild(document.createElement('img'));
    iconImg.setAttribute('class', 'calendarIcon');
    iconImg.src = this.hasAttribute('iconImgSrc') ? this.getAttribute('iconImgSrc') : 'api/theme/img/icons-calendar.png';

    const calendarInput = calendarInputLabel.appendChild(document.createElement('input'));
    calendarInput.setAttribute('type', 'text');
    calendarInput.setAttribute('id', this.getAttribute('calendarName'));




    shadowRoot.append(wrapper);


  }
  connectedCallback() {
      $(this.shadowRoot.getElementById('from')).datepicker({
        dateFormat: "dd-mm-yy"
        ,   duration: "fast"
      });




  }


}


customElements.define('custom-calendar', CustomCalendar);
<custom-calendar calendarName="from"> </custom-calendar>

请帮我。我该如何解决?

I wanted to use native web in order to have custom calendar. I created js file and wrote some class that extends HTMLElement. Calendar pops up properly but the problem is that I can't choose a day in the calendar. When I try to choose a date It throws this exception : "Uncaught Missing instance data for this datepicker".

My code looks like this :

class CustomCalendar extends HTMLElement {
  constructor() {
    super();
    let shadowRoot = this.attachShadow({mode: 'open'});

    const wrapper = document.createElement('div');

    wrapper.setAttribute('class', 'wrapper');

    const calendarInputLabel = wrapper.appendChild(document.createElement('label'));
    calendarInputLabel.setAttribute('class', 'date-label');

    const iconImg = calendarInputLabel.appendChild(document.createElement('img'));
    iconImg.setAttribute('class', 'calendarIcon');
    iconImg.src = this.hasAttribute('iconImgSrc') ? this.getAttribute('iconImgSrc') : 'api/theme/img/icons-calendar.png';

    const calendarInput = calendarInputLabel.appendChild(document.createElement('input'));
    calendarInput.setAttribute('type', 'text');
    calendarInput.setAttribute('id', this.getAttribute('calendarName'));




    shadowRoot.append(wrapper);


  }
  connectedCallback() {
      $(this.shadowRoot.getElementById('from')).datepicker({
        dateFormat: "dd-mm-yy"
        ,   duration: "fast"
      });




  }


}


customElements.define('custom-calendar', CustomCalendar);
<custom-calendar calendarName="from"> </custom-calendar>

please help me. How can I fix this ?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文