繁体   English   中英

JavaScript 表单验证(必需)

[英]JavaScript Form Validation (required)

您好,我正在为自己建立一个网站,遇到了这个问题,我的表单直接进入了它的成功页面,输入为空。 我怎样才能解决这个问题? 我已经浏览了像我这样的其他问题,但似乎没有一个可以解决这个问题。 该表格位于 HTML 标记内,输入关闭“/>”。 我认为这可能是我的脚本影响它,但我不明白我应该如何 go 关于编码以“验证”表单的概念。 我知道您可以使用 JavaScript 和 JQuery 来做到这一点。 话虽如此,我该如何解决我的这个问题,这里是代码片段。

<div class="contact-form col-md-6 col-sm-6">
                    <form action="#" name="contact" class="needs-validation">
                        <label for="fname">Full Name</label>
                        <input type="text" id="fname" name="firstname" placeholder="Enter your full name..." required />
                        <label for="email">Email</label>
                        <input type="text" id="email" name="email" placeholder="Enter a valid email..." required />
                        <label for="subject">Message</label>
                        <textarea id="subject" name="subject" placeholder="Your requested choice/inquiry..." required></textarea>
                        <a href="success.html" class="button-submit">SEND</a>
                    </form>
</div>

这是我试图处理的脚本:

// Disable form submissions if there are invalid fields
(function() {
    'use strict';
    window.addEventListener('load', function() {
        // Get the forms we want to add validation styles to
        var forms = document.getElementsByClassName('needs-validation');
        // Loop over them and prevent submission
        var validation = Array.prototype.filter.call(forms, function(form) {
            form.addEventListener('submit', function(event) {
                if (form.checkValidity() === false) {
                    event.preventDefault();
                    event.stopPropagation();
                }
                form.classList.add('was-validated');
            }, false);
        });
    }, false);
})();

您的帮助将不胜感激,谢谢。

您的代码不正确,不应该是这样的,带有href将始终将您重定向到指定的页面,而不是进行发布或获取。

更改此代码:

 <a href="success.html" class="button-submit">SEND</a>

对此:

 <button class="btn btn-primary" type="submit">SEND</button>

您的 HTML 应如下所示:

<div class="contact-form col-md-6 col-sm-6">
    <form method="post" action="#" name="contact" class="needs-validation">
        <label for="fname">Full Name</label>
        <input class="form-control" type="text" id="fname" name="firstname" placeholder="Enter your full name..." required />
        <label for="email">Email</label>
        <input class="form-control" type="text" id="email" name="email" placeholder="Enter a valid email..." required />
        <label for="subject">Message</label>
        <textarea class="form-control" rows="3" id="subject" name="subject" placeholder="Your requested choice/inquiry..." required></textarea><br>
        <button type="submit"class="btn btn-success">SEND</button>
    </form>
</div>

您的脚本没有任何问题。 您必须正确学习 html 结构。

您需要在 onsubmit function 开始时阻止您的默认设置。 当您的 checkValidity function 正在运行时,表单可能已完成处理然后提交。 阻止它这么高只会阻止它一起处理,因此您可以检查您的验证并根据结果执行您想要的操作。

form.addEventListener('submit', function(event) {
   event.preventDefault();
   if(form.checkValidity()){
      form.classList.add('was-validated');
   }
}, false);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM