JS表单验证 用tab键去选择的时候失效。

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JS表单验证 用tab键去选择的时候失效。相关的知识,希望对你有一定的参考价值。

自己写了表单验证,只写了onclick和onblur事件,所以失效了。
请问如何写才能在按tab键时也能触发onclick事件

参考技术A 不需要整这么复杂 当表单获得焦点(onfocus)的时候触发事件就行了 不管你按tab还是鼠标点击都能触发 实在想判断tab的话就先写个键盘按下事件 然后判断按键值本回答被提问者采纳 参考技术B 最根本的需求应该是表单验证,没必要按tab键也触发onclick事件。
最好的方式是提交前也要做各输入框数据检查。
参考技术C 定义键盘事件 判断按tab键时触发onclick事件或者是调用特定的方法 使用keydown keyup 还是keypress就看你的需要 参考技术D 可以试试onfocus事件和onblur事件结合使用。 第5个回答  2014-01-11 加一个onfocue事件

用表单验证数据

ModelForm:
大家在写表单的时候,会发现表单中的 Field 和模型中的 Field 基本上是一模一样的,而且表单 中需要验证的数据,也就是我们模型中需要保存的。那么这时候我们就可以将模型中的字段和表单 中的字段进行绑定。

比如现在有个 Article 的模型。示例代码如下:

from django.db import models
from django.core import validators 
class Article(models.Model):
    title = models.CharField(max_length=10,validators=[validators.MinLengthValidator(li mit_value=3)])
    content = models.TextField()
    author = models.CharField(max_length=100)
    category = models.CharField(max_length=100)
    create_time = models.DateTimeField(auto_now_add=True)

那么在写表单的时候,就不需要把 Article 模型中所有的字段都一个个重复写一遍了。示例代码 如下:

from django import forms 
class MyForm(forms.ModelForm):
    class Meta:
        model = Article
        fields = "__all__"

MyForm 是继承自 forms.ModelForm ,然后在表单中定义了一个 Meta 类,在 Meta 类中指定 了 model=Article ,以及 fields="__all__" ,这样就可以将 Article 模型中所有的字段都复制过 来,进行验证。如果只想针对其中几个字段进行验证,那么可以给 fields 指定一个列表,将需要 的字段写进去。比如只想验证 title 和 content ,那么可以使用以下代码实现:

from django import forms 
class MyForm(forms.ModelForm):
    class Meta:
        model = Article
        fields = [title,content]

如果要验证的字段比较多,只是除了少数几个字段不需要验证,那么可以使用 exclude 来代 替 fields 。比如我不想验证 category ,那么示例代码如下:

class MyForm(forms.ModelForm):
    class Meta:
        model = Article
        exclude = [category]

自定义错误消息:
使用 ModelForm ,因为字段都不是在表单中定义的,而是在模型中定义的,因此一些错误消息无 法在字段中定义。那么这时候可以在 Meta 类中,定义 error_messages ,然后把相应的错误消息 写到里面去。示例代码如下:

class MyForm(forms.ModelForm):
    class Meta:
        model = Article
        exclude = [category]
        error_messages  ={
            title:{
                max_length: 最多不能超过10个字符!,
                min_length: 最少不能少于3个字符!
            },
            content: {
                required: 必须输入content!, 
           }
        }

save方法:
ModelForm 还有 save 方法,可以在验证完成后直接调用 save 方法,就可以将这个数据保存到数 据库中了。示例代码如下:

form = MyForm(request.POST) 
if form.is_valid():
    form.save()
    return HttpResponse(succes) 
else:
    print(form.get_errors())
    return HttpResponse(fail)

这个方法必须要在 clean 没有问题后才能使用,如果在 clean 之前使用,会抛出异常。另外,我 们在调用 save 方法的时候,如果传入一个 commit=False ,那么只会生成这个模型的对象,而不 会把这个对象真正的插入到数据库中。比如表单上验证的字段没有包含模型中所有的字段,这时候 就可以先创建对象,再根据填充其他字段,把所有字段的值都补充完成后,再保存到数据库中。示 例代码如下:

form = MyForm(request.POST)
 if form.is_valid():
    article = form.save(commit=False)
    article.category = Python
    article.save()
    return HttpResponse(succes) 
else:
    print(form.get_errors())
    return HttpResponse(fail)

 




以上是关于JS表单验证 用tab键去选择的时候失效。的主要内容,如果未能解决你的问题,请参考以下文章

jquery表单验证on啥意思?

本人新手,请问各位大神EasyUI怎么取消表单时表单验证

js验证表单不能填数字怎么判断?

我要一段验证身份证的js加上表单的写法

js表单验证的问题

用js表单 验证身份证号合法怎么写