【问题标题】:HTML form is not taking in a date value on desktop, but is on mobileHTML 表单在桌面上不接受日期值,但在移动设备上
【发布时间】:2018-06-10 18:20:27
【问题描述】:

我正在创建一个表单。我创建了一个在移动设备上呈现的移动块和一个在桌面上呈现的桌面块。此表单中有几个字段,除了我希望某人输入日期的日期字段外,它工作正常。在移动块上,日期字段完美地获取了一个值。在桌面块上,它接受任何值。渲染桌面版本时我最终收到此错误:

ValueError: time data '' does not match format '%Y-%m-%d'

HTML 看起来像这样(为简单起见,我删除了表单中的大部分字段,如果您需要查看更多 HTML,请告诉我):

<form method="POST">
<div class="mobile-only">
   <div class="form-group row">
      <div class="col-12 col-md-2 col-lg-4">
         <label for="start-date" class="col-form-label">
            <h4>Start Date: <sup class="required">(required)</sup></h4>
         </label>
      </div>
      <div class="col-12 col-md-10 col-lg-4">
         <input type ="date" maxlength="10" class="form-control" id="start-date" name="start-date" placeholder="MM/DD/YYYY">
      </div>
   </div>
   <div class="row">
      <div class="col-3 col-md-1">
         <button class="green-button link-text" type="submit" id="submit" type="submit">Save</button>
      </div>
      <div class="col-3 col-md-1">
         <button class="green-button"><a href="{{ url_for('displayReminders') }}" class="link-text">Cancel</a></button>
      </div>
   </div>
</div>

上面的代码在移动设备上运行良好,下面是在桌面上呈现的内容,并给出了上面引用的错误:

 <div class="desktop-only">
   <div class="form-group row">
      <div class="col-lg-1">
         <label for="start-date" class="col-form-label">
            <h4>Start Date: <sup class="required">(required)</sup></h4>
         </label>
      </div>
      <div class="col-lg-3">
         <input type ="date" maxlength="10" class="form-control" id="start-date" name="start-date" placeholder="MM/DD/YYYY">
      </div>
   </div>
   <div class="row">
      <div class="col-3 col-md-1">
         <button class="green-button link-text" type="submit" id="submit" type="submit">Save</button>
      </div>
      <div class="col-3 col-md-1">
         <button class="green-button"><a href="{{ url_for('displayReminders') }}" class="link-text">Cancel</a></button>
      </div>
   </div>
</div>
</form>

另外,如果相关的话,我使用的是 Bootstrap 4,后端是一个带有 Python 的 Flask 应用程序。知道问题是什么吗?

【问题讨论】:

    标签: python html forms mobile flask


    【解决方案1】:

    您的占位符向用户指示此格式:

    placeholder="MM/DD/YYYY"
    

    但在您期望的代码中的其他地方:

    format '%Y-%m-%d'
    

    这是您的错误,如果您尝试上传到数据库,您应该使用 YYYY-MM-DD,因为这是国际标准,然后在您的前端转换为 MM/DD/YYYY。 如果您要求输入 MM/DD/YYYY,则需要将其转换为 YYYY-DD-MM

    【讨论】:

    • 感谢您的回复。但是为什么它在移动 div 上运行良好?我在移动 div 上使用相同的代码。
    • 另外,如果您注意到,错误是表示在该字段中注册了 NO 数据。如果这是您提到的特定问题,则错误会提到它正在读取的数据为“MM/DD/YYYY”,然后说它的格式不正确。我相信 '%Y'、'%m' 和 '%d' 是为了从输入中去除“MM”、“DD”、“YYYY”,并将其重新格式化为我的 python 中的 YYYY-MM-DD代码。同样,这适用于移动设备。
    • 是的,它不注册数据,因为它的格式错误。以前的网页也有类似的问题,是我在windows机器上的日期格式导致的,必须从欧洲格式更改为美国格式。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-02-13
    • 1970-01-01
    • 2019-09-30
    • 2017-10-03
    • 1970-01-01
    • 2020-06-24
    • 1970-01-01
    相关资源
    最近更新 更多