Как отправить форму Django, используя Javascript? - PullRequest
0 голосов
/ 17 апреля 2019

У меня есть следующая форма Django:

class EmailForm(forms.Form):
    name = forms.CharField(...)
    email = forms.CharField(...)
    message = forms.CharField(...)

Который я затем отображаю в своем HTML-коде так:

<div class="controls">
    {% csrf_token %}
    <div class="form-group">
        {{ form.name }}
    </div>
    <div class="form-group">
        {{ form.email }}
    </div>
    <div class="form-group">
        {{ form.message }}
    </div>
    <input type="submit" value="Say hello" onclick="sendEmail(this);">
</div>

Я пытаюсь отключить кнопку отправки после ее нажатия. Вот моя функция JavaScript:

<script>
    function sendEmail(this1)
    {
        var name = document.getElementById("form_name").value;
        var email = document.getElementById("form_email").value;
        var message = document.getElementById("form_message").value;

        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,}))$/;
        var result = re.test(String(email).toLowerCase());

        if (name != "" && result && message != "") {
            this1.disabled=true; 
        }
    }
</script>

Когда я перезаписываю поле onclick в теге <input>, кнопка отключается в результате функции Javascript, но форма не отправляется (страница не перезагружается, Django не обрабатывает POST ). Как продолжить действие по умолчанию для кнопки отправки после ее отключения?

Ответы [ 2 ]

4 голосов
/ 17 апреля 2019

Ваш шаблон не имеет тегов <form></form>, без них нет формы для отправки.

Вы должны написать:

<form id="MyForm">
    <div class="controls">
    ...
    <input type="submit" value="Say hello" onclick="sendEmail(this);">
    </div>
</form>

Это должно сделать, но в случаеэто не так (я действительно думаю, что это будет), вы можете добавить это к вашей sendEmail функции:

document.getElementById("myForm").submit();
0 голосов
/ 17 апреля 2019

как насчет onclick="this.submit()"

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...