如果 Django 表单缺少字段,则 JavaScript 警报框

标签 javascript jquery django forms

我想在我的 Django 网站应用程序中实现一些 JQuery 元素以使其动态化。

例如,用户正在填写表单,并且会出现一个警报框,具体取决于我的 Django 表单是否填写良好。

  • 如果 Django 表单填写良好,它将给出:“表单已创建”

  • 如果 Django 表单未正确填写,则会显示:“请查看您的表单”

我尝试了一些方法,我的 html 文件如下所示:

    <form class = "form" method='POST' action=''> {% csrf_token %}
        <br></br>
        {{ form.as_p}} <!-- Display child part formulary -->
        <br></br>

        <button onclick="myFunction()">Valider le formulaire</button>
    </form>

        {% if form.is_valid %}
        <script>
        function myFunction() {
            alert("Le formulaire a été créé");
        }
        </script>
        {% else %}
        <script>
        function myFunction() {
            alert("Le formulaire n'a pas été créé car champ(s) invalide(s)");
        }
        </script>
        {% endif %}

我的观点如下:

def BirthCertificate_Form_unique_number(request) :

    validity = []
    #User fill some fields
    query_social_number = request.GET.get('social_number')
    query_social_number_father = request.GET.get('social_number_father')
    query_social_number_mother = request.GET.get('social_number_mother')

    if request.method == 'POST':

        form = BirthCertificateForm2(request.POST or None)

        if form.is_valid() :   # Vérification sur la validité des données
            post = form.save()
            return HttpResponseRedirect(reverse('BC_treated2', kwargs={'id': post.id}))
     ...

如何在我的文件中写入此 AlertBox?

谢谢!

PS:我对 JQuery 很陌生。第一次使用

编辑:

我尝试了类似的操作,但没有出现任何警报:

<form class = "form" method='POST' action=''> {% csrf_token %}
                <br></br>
                {{ form.as_p}} <!-- Display child part formulary -->
                <br></br>

                <button type="input">Valider</button>
            </form>


            <script type="text/javascript" >
                $(document).on('Valider', 'form.form', function(form) {
                var $form = $(form);
                $.ajax({
                    url:"/path_to_directory/BC_form2.html",
                    type: "POST",
                    success: function(form) {
                    alert("L'acte de naissance a été créé");
                    }
                });
                });
            </script>

最佳答案

您可以使用ajax提交数据以查看然后验证数据并返回响应的json。之后,您可以根据您的返回显示警报。您可以根据需要使用 $.ajax()$.get()$.post() 等函数。只需确保您可以根据 View 中的响应处理 ajax 中的数据。

已更新

为了你编辑案例,你必须了解更多关于 jQuery 的知识。而不是

$(document).on('Valider', 'form.form', function(form)

你应该

$(document).on('事件', '选择器', 函数(表单)

对于事件是一种输入或您想要处理的事件,例如当您想处理点击时,您可以使用click或您可以进行的更改使用更改

对于选择器来说,是从html元素中获得的某种id、类或其他类型。因此,在您的情况下,如果您想使用 click 事件,代码将类似于

$(document).on('click', '.btn-validate', function(e){
    var form = $(".form").serialize();
    $.ajax({
        url: "url_on_your_view and already registered in you url.py",
        type: "POST",
        success:function(response){
            alert("L'acte de naissance a été créé");
        }
    });
}

您的按钮必须更新为

<button type="input" class="btn-validate">Valider</button>

关于如果 Django 表单缺少字段,则 JavaScript 警报框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43258482/

相关文章:

javascript - 无法 `focus` 编辑 `div` 元素

python - 在 app-engine-patch 中导入 django 设置

python - Django self.request 不通过查询进行过滤

java - 如何将数据客户端发送到服务器django channel

javascript - 具有多种功能的 jQuery 作用域

javascript 测试 .length 和 .length > 0

javascript - 如果未加载外部脚本,如何停止脚本执行

javascript - jQuery 函数有时在 AJAX 请求完成后重定向,有时保留在页面上?

javascript - UIWebView 文本高亮解决方案

javascript - 从函数中提取参数并将其用作逻辑句子