烧瓶中类型为time的HTML输入-如果丢失,如何自动完成分钟/秒

问题描述 投票:-1回答:1

我正在使用带有提交按钮的表单,该表单通过Flask处理,以便在称为任务的SQLite数据库中添加新任务(一行)。

这里是HTML <div/>容器,其中烧瓶部分分别具有块内容

<div class="container">
    {% block content %}
    <form name="task_form" method="post" action="">
        {{ form.csrf_token }}
        <input type="text" name="task_title" placeholder="Title..."/>
        <input type="text" name="task_description" placeholder="Description..."/>
        <input type="date" name="task_date_due" placeholder="Due date..."/>
        <input type="time" name="task_clock_due" placeholder="Due date (clock)..." step="1"/>
        <input type="submit" name="task_submit" value="Add task"/>
    </form>
    {% endblock %}
</div>

在Python方面,我具有以下功能,用于处理特定页面的GET和POST请求:

@app.route('/db', methods=['GET', 'POST'])
def db():

  # Create form 
  form = TaskForm(request.form)
  # Initialize DB connection
  init_db_conn()

  # Handle POST request
  if request.method == 'POST':
    # Get form data
    title = request.form['task_title']
    description = request.form['task_description']
    date = request.form['task_date_due']
    time = request.form['task_clock_due']

    if title != '' and description != '' and date != '' and time != '':
      str_dtime = date + ' ' + time
      db_conn = get_db_conn()
      create_task(db, title, description, str_dtime)
 elif request.method == 'GET':
   pass

 db_conn = get_db_conn()
 cur = db_conn.cursor()
 cur.execute('SELECT * FROM tasks')
 tasks = cur.fetchall()

 tmp = render_template('db.html', form=form, tasks=tasks)

 return tmp

[我不是Flask的新手,我的HTML技能很生锈,所以我可能会遗漏一些东西,但是每当我通过页面提交表单中的数据时,我都没有输入完整的时间戳(我使用单独的日期和时间输入以允许使用日历弹出窗口和时间格式的字段;可以通过更好的方式来完成,但现在就这样),我得到了空字符串。

示例:

  • 如果输入08:00:-PM,我将得到空字符串
  • 如果输入08:-:-PM,我将得到空字符串。

我期望的是,只要选择了小时,就会自动获得分钟/秒的自动补全。

示例:

  • 如果输入08:00:-PM,我将得到08:00:00 PM(内部取决于我在Python方面选择的格式,它将转换为 20:00:00
  • 如果我输入08:-:-PM,我将得到08:00:00 PM(内部取决于我在Python方面选择的格式,它将转换为< [20:00:00)
是否有解决此问题的简便方法,还是必须创建一个自定义输入字段?我可能可以添加一个默认值或仅将当前时间添加为值,以防止出现这种情况,但这只是解决问题的方法。如果用户删除了默认值以输入另一个值而忘记填写所有信息,则会再次出现此问题。
python html python-3.x flask html-input
1个回答
1
投票
我认为您无法自动完成HTML中的缺失值,但是例如,您始终可以将默认值设置为00:00:00,如果它们仅更改小时,则秒和分钟为仍为零。他们仍然可以删除0,但是您可以使用验证器解决此问题,该验证器不会让他们输入无效的时间:

<input type="time" name="task_clock_due" placeholder="Due date (clock)..." step="1", value="00:00:00"/> <span class="validity"></span>

© www.soinside.com 2019 - 2024. All rights reserved.