输入类型日期的占位符(仅当未输入值时)

Posted

技术标签:

【中文标题】输入类型日期的占位符(仅当未输入值时)【英文标题】:Placeholder for input type date (only when no value entered) 【发布时间】:2021-02-03 22:25:25 【问题描述】:

我正在尝试为输入类型日期设置占位符。

我想要的: 如果该值尚未输入,或者它保持默认值(如 dd/mm/yyyy),则显示占位符。如果插入了日期,则不显示占位符。

我有什么: 占位符只在关注元素之前显示,之后它就永远消失了,即使没有在日期选择器中输入任何值。

$( ".dateInput" ).focus(function() 
  if ( $(this).attr('value') != '' ) 
    $(this).attr("placeholder", "");
    $(this).css('text-align', 'left');
    console.log('no place');
   else 
    $(this).attr("placeholder", "Date of Birth*");
    $(this).css('text-align', 'right');
    console.log('place');
  
);
.loanInput 
    width: 400px;
    border: 3px solid #008e39;
    font-family: 'Open Sans', sans-serif;
    font-weight: 400;
    font-size: 20px;
    border-radius: 8px;
    padding: 5px 10px;
    margin-top: 20px;


input[type=date] 
  text-align: right;


input[type="date"]:before 
  color: #999;
  content: attr(placeholder) !important;
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

<input type="date" class="loanInput dateInput" required placeholder="Date of Birth*">

【问题讨论】:

【参考方案1】:

您可以做的是使用change 事件代替focus。通过使用change,仅当输入日期有效时才会发生更改:)

$( ".dateInput" ).change(function() 
  if ( $(this).attr('value') != '' ) 
    $(this).attr("placeholder", "").css('text-align', 'left');
    console.log('no place');
   else 
    $(this).attr("placeholder", "Date of Birth*").css('text-align', 'right');
    console.log('place');
  
);
.loanInput 
    width: 400px;
    border: 3px solid #008e39;
    font-family: 'Open Sans', sans-serif;
    font-weight: 400;
    font-size: 20px;
    border-radius: 8px;
    padding: 5px 10px;
    margin-top: 20px;


input[type=date] 
  text-align: right;


input[type="date"]:before 
  color: #999;
  content: attr(placeholder) !important;
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

<input type="date" class="loanInput dateInput" required placeholder="Date of Birth*">

【讨论】:

是的,我很高兴! 不要忘记将答案标记为正确。除此之外,如果您需要任何解释,请告诉我。快乐编码:)

以上是关于输入类型日期的占位符(仅当未输入值时)的主要内容,如果未能解决你的问题,请参考以下文章

W3C 验证器错误:仅当输入类型为时才允许使用属性占位符

删除占位符输入类型日期的 mm/dd/yyyy

从chrome中的日期类型输入中删除占位符[重复]

输入类型日期html5的占位符

输入类型日期html5的占位符

Angular:如何更改输入类型 =“日期”占位符值