css 在Firefox上的日期类型HTML输入中隐藏日历图标

5q4ezhmt  于 2023-06-25  发布在  其他
关注(0)|答案(2)|浏览(153)

问题很简单。

<input type="date />

在Firefox上看起来像这样(桌面和移动的):

互联网上只建议了一个针对Chrome的解决方案:

input {
  appearance: none;
  -webkit-appearance: none;
  -moz-appearance: none;
}

input[type="date"]::-webkit-inner-spin-button,
input[type="date"]::-webkit-calendar-picker-indicator {
    display: none;
    -webkit-appearance: none;
}

这确实适用于Chrome,但不适用于Firefox。我试过的东西在Firefox上都不管用。我在想这是否可能。我想隐藏日历图标。我知道在桌面上,点击日历是调出日期选择器的唯一方法。这不是问题,因为它是一个移动的应用程序。

erhoui1w

erhoui1w1#

input[type="date"]::-webkit-inner-spin-button,
input[type="date"]::-webkit-calendar-picker-indicator {
  display: none;
  -webkit-appearance: none;
  -moz-appearance: none;
  -o-appearance: none;
  appearance: none;
}

把这段代码添加到css,我希望会被删除

nxagd54h

nxagd54h2#

一种方法是在日期选择器上覆盖一个文本输入框,然后使用showPicker()方法触发日期选择器对话框。使用change事件将日期输入中的任何更改反映到文本输入中。我还没有格式化日期,但您可以使用Intl.DateTimeFormat对象使日期区域设置友好。
只是一个提示:由于安全原因,这在codepen或snippet编辑器上不起作用,因此要测试它,您必须将其放到localhost或您的开发环境中。

const textInput = document.querySelector('.datepicker input[type="text"]');
const dateInput = document.querySelector('.datepicker input[type="date"]');
textInput.addEventListener('focus', (e) => {
  dateInput.showPicker();
});
dateInput.addEventListener('change', (e) => {
  textInput.value = dateInput.value; //Use Intl API to format the date if you want.
});
.datepicker {
  width: 8rem;
  position: relative;
}

.datepicker input {
  width: 100%;
  box-sizing: border-box;
}

.datepicker input[type='date'] {
  position: absolute;
  inset: 0;
  z-index: -1;
}
<div class='datepicker'>
  <input type=text placeholder='yyyy/mm/dd'>
  <input type=date>
</div>

相关问题