Django“自动对焦”表单验证错误

Posted

技术标签:

【中文标题】Django“自动对焦”表单验证错误【英文标题】:Django "autofocus" on form validation error 【发布时间】:2016-12-17 12:22:01 【问题描述】:

使用 Django 1.9 和 python 3.5,我想在我的模型表单中“设置焦点”在第一个验证失败的字段上。

这是如何实现的?

谢谢。

【问题讨论】:

【参考方案1】:

我相信以下内容应该适合您。 (未经测试)

在表单的__init___ 期间遍历字段。将autofocus 属性应用于遇到错误的第一个字段。

class MyForm(models.ModelForm):
    def __init__(self, *args, **kwargs):
        super(MyForm, self).__init__(*args, **kwargs)

        for _, field in self.fields.iteritems():
            if field in self.errors:
                field.widget.attrs.update(
                    'autofocus': ''
                )

                break

【讨论】:

【参考方案2】:

这个解决方案对我有用:

class YourForm(forms.ModelForm):

def __init__(self, *args, **kwargs):
    super(YourForm, self).__init__(*args, **kwargs)

    #Focus on form field whenever error occurred
    errorList=list(self.errors)
    for item in errorList:
        self.fields[item].widget.attrs.update('autofocus': '')
        break

【讨论】:

以上是关于Django“自动对焦”表单验证错误的主要内容,如果未能解决你的问题,请参考以下文章

为啥我的 Django 表单没有引发验证错误?

Django Formset管理-表单验证错误

附加到 Django 表单验证错误?

显示 ModelForms 的 django 表单验证错误

将 Django 模型验证错误传输到表单的惯用方式

Django 表单:无法显示验证错误