我正在尝试在一个非常简单的表单上进行表单验证。我将有一个名称字段,一个电子邮件字段和一个消息字段。

基本上,我想验证名称以检查是否有超过1个字符,我想根据有效的电子邮件格式来验证电子邮件,并且我想验证消息以检查是否超过1个字符。

我还希望在专注于下一个字段而不是提交之后立即将错误类应用于该字段,但是我似乎无法使其正常工作,并且我的错误/成功类也未得到应用。谁能看看我让我知道自己错了吗?

HTML:

<form id="contactform" name="contact" action="{{ contents.form_submissions.api.create }}" method="post">
 <p>
  <label for="name">Name:</label>
  <input type="text" id=name name="content[name]" placeholder="Name" required tabindex="1" />
 </p>
 <p>
  <label for="email">Email:</label>
  <input type="text" id=email name="content[email]" placeholder="example@domain.com" required tabindex="2" />
 </p>
 <p>
  <label for="message">Message:</label>
  <textarea name="content[message]" id="message" tabindex="3" required></textarea>
 </p>
 <p class="action">
  <input name="submit" type="submit" id="submit" tabindex="4" value="Send Message" />
 </p>
</form>


Javascript:

$(document).ready(function() {
    var validator = $("#contactform").validate({
        errorClass: 'input-error',
        validClass: 'input-valid',
        rules: {
            name: "required",
            email: "required",
            message: {
                required: true,
                minlength: 1
            }
        },
        messages: {
            name: "Enter your name",
            email: "Enter your email",
            message: {
                required: "Enter a message",
                minlength: 1
            }
        }
    });
});


Here's a JSFiddle

最佳答案

您的名称属性必须与规则名称匹配(即,如果您具有name="content[name]",则您的规则必须为'content[name]': "required"
除非您需要HTML5验证而不是jQuery验证,否则请勿在输入元素中使用required属性。
随时调用$('#contactform').valid()触发验证


工作示例:http://jsfiddle.net/ryleyb/kv8T8/8/

08-18 02:52
查看更多