使用jQuery检查电子邮件是否有效,从FormForm开始

时间:2013-03-14 02:45:45

标签: jquery ajax django django-templates

您好我有一个基于找到的文档完成的模型表单: https://docs.djangoproject.com/en/dev/topics/forms/modelforms/

我的反馈表的一些属性:

Models.py

class Feedback(models.Model):
    name = models.CharField(max_length=200)
    email = models.EmailField()
    title = models.CharField(max_length=200)
    feedback = models.TextField()

class FeedbackForms(ModelForm):     类Meta:         model =反馈

forms_details.py

def save_form(request):
    if request.method == 'POST':
        form = FeedbackForms(request.POST)
        if form.is_valid():
            form.save()
            name = form.cleaned_data['name']
            email = form.cleaned_data['email']
            title = form.cleaned_data['title']
            feedback = form.cleaned_data['feedback']

            email = EmailMessage("%s" % title, "%s <%s> said: %s" % (name, email,feedback),
                                 to=['smth@example.com'])
            email.send()
            return render_to_response("success.html")
    else:
        form = FeedbackForms()
    return render_to_response("form.html", {'form': form}, context_instance=RequestContext(request))

但是,现在我想在执行POST之前使用jQuery检查键入的电子邮件是否有效。

我找到了类似于我需要的东西here,但是它适用于表格。我试过了,但它对我的ModelForm没有用。

2 个答案:

答案 0 :(得分:0)

有jQuery的客户端表单验证插件可以肯定,但你真的不需要使用它。您可以通过Ajax执行所有验证服务器端,并在尝试保留任何数据之前将表单错误作为JSON返回。这样您就不必维护两组验证,并获得相同的结果。

[无耻的自我插件]我写了一些base form classes,通过jQuery可以在Django Snippets上使用它。

答案 1 :(得分:0)

if(isEmail(email)) {
//Do something
}

function isEmail(emailaddress) { 
    var re = /^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;
    return re.test(emailaddress);
}