如何使用Javascript提交Django表单?

wca*_*art 1 javascript django

我有以下Django形式:

class EmailForm(forms.Form):
    name = forms.CharField(...)
    email = forms.CharField(...)
    message = forms.CharField(...)
Run Code Online (Sandbox Code Playgroud)

然后我将其呈现在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>
Run Code Online (Sandbox Code Playgroud)

我试图在按下提交按钮后将其禁用。这是我的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>
Run Code Online (Sandbox Code Playgroud)

当我覆盖标记中的onclick字段时<input>,由于Javascript函数的作用,该按钮被禁用,但表单未提交(页面未重新加载,Django不处理POST)。禁用提交按钮后,如何继续执行默认操作?

Ray*_*nda 5

您的模板没有<form></form>标签,没有这些标签,则无法提交表单。

您应该写:

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

应该可以做到这一点,但是万一不行(我确实认为可以),可以将其添加到sendEmail函数中:

document.getElementById("myForm").submit();
Run Code Online (Sandbox Code Playgroud)