表单提交前的javascript验证

标签 javascript html

在将代码提交到服务器之前,我在我的代码中添加了一个 javascript 表单验证。当用户点击 submit 时,它应该在提交之前调用 javascript 验证器。如果验证器给出了 ok,那么它才应该提交。我似乎做错了什么,因为无论验证器说什么它都会提交......

HTML:

<form id="start_form" method="post" onsubmit="return validate_form(this);">
    <ul class="error">
    </ul>
    <label for="title" >Title: </label><input value="{{ post.title }}" type="text" name="title">
    <label for="summery" >Summery/Prompt: <textarea name="summery">{{ post.summery }}</textarea>
    <label for="person">Participants Emails: </label>
    <ul id="people">
        <li><input type="text" name="person1"></li>
        <li><input type="text" name="person2"></li>
    </ul>
    <a href="javascript:void(0)" onclick="add_group();"><img class="img_button" width="30px" height="30px" src="{{ STATIC_URL }}Image/plus_button.png" /></a>
    <a href="javascript:void(0)" onclick="remove_group();"><img class="img_button" width="30px" height="30px" src="{{ STATIC_URL }}Image/minus_button.png" /></a>
    <button type="submit" class="button">Start Game</button>
    <input type="hidden"  id="pn" name="pn" value="2">
</form>

Javascript 函数:

function validateEmail(email) {
    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(email);
}
function append_error(m) {
    c = "<li>" + m + "</li>"
    $('#error').appendChild(c)
    }
function validate_form(form) {
        var e = true
        if (form.title.value == "") {
            append_error("Title Required");
            e = false
        }
        if (form.summery.value == "") {
            append_error("Summery Required");
            e = false
        }
        for (i = 0; i < Number(form.pn.value); i++){
            email = $('[name="person"' + i++ + '"]').innerText
            if(email == ""){
                append_error("Email #" + ++i + " can not be blank")
                e = false
            } else if (!validateEmail(email)) {
                append_error("Email #" + i++ + " is not valid")
                e = false
            }
        }
        return e;
    }

最佳答案

jquery 没有 appendChild 方法。 在你的函数中:

function append_error(m) {
    c = "<li>" + m + "</li>"
    $('#error').appendChild(c)
}

这会导致提交最终忽略您的验证功能的错误

关于表单提交前的javascript验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14033414/

相关文章:

javascript - HTML 易于(和触摸兼容)拖放?

html - alt-tag 中的标题 (alt ='<h1>Test</h1>' )

javascript - css: <img> 给定坐标 x,y 位于另一个图像顶部的位置(使用 jquery)

javascript - 如何编写 .html.erb javascript 函数来隐藏特定页面的标题?

javascript - 如何使用 JavaScript 获取 <td> 的内容?

javascript - 将代码应用于文本行而不是容器 div

html - Div 与 YouTube 视频并排对齐

html - Div 拉伸(stretch)以适应内容。溢出 : auto; does not work

javascript - 找不到名称 'SafeUrl'

javascript - ngIf 仅用于 _this_ 元素,无论如何都显示 child