2

I am using the jQuery validate plugin for doing form validation. it's just checking first field only. if first field validation is true then it's submitting form. it's not validating rest fields..

i am using bootstrap 3.0

  <script type="text/javascript"> 
$(document).ready(function(){
    $('#contact').validate({
       rules: {
           firstname: {
               required: true,
               minlength: 5,
           },
           useremail: {
               required: true,
           }
       }
    });
})
</script>
   <form action="" method="" id="contact">
            <div class="form-group">
                <label> Your Name </label>
                <input type="text" class="form-control" placeholder="Enter Your Name" id="firstname" required="" minlength="5"/>
            </div>

            <div class="form-group">
                <label> Your E-mail </label>
                <input type="email" class="form-control" placeholder="Enter Your Email" id="useremail" required=""/>
            </div>

            <div class="form-group">
                <label> Contact Detail </label>
                <input type="text" class="form-control" placeholder="Enter Contact Number" id="mobile" minlength="10" maxlength="10" required=""/>
            </div>
            <div class="form-group">
                <label> Type</label>
                <select class="form-control">
                <option> Inquiry </option>
                <option> Complaints </option>
                <option> Feedback </option>
                <option> Others </option>
            </select>
                </div>
            <div class="form-group">
                <label> Message</label>
                <textarea class="form-control" rows="3" cols="5" placeholder="Enter Your Message Here..." id="message" minlength='10' required=""></textarea>
            </div>
            <button type="submit" class="btn btn-primary btn-lg"> Send</button>
        </form>

I don't know what's going wrong with my code? Please help...

Thanks in advance

Sparky
  • 98,165
  • 25
  • 199
  • 285
404 Not Found
  • 1,223
  • 2
  • 22
  • 31

2 Answers2

6

You have a typo in your validate options. relues must be rules.

Name attributes must also be specified:

HTML

<form action="" method="" id="contact">
    <div class="form-group">
        <label>Your Name</label>
        <input type="text" class="form-control" placeholder="Enter Your Name" name="firstname" required="" minlength="5" />
    </div>
    <div class="form-group">
        <label>Your E-mail</label>
        <input type="email" class="form-control" placeholder="Enter Your Email" name="useremail" required="" />
    </div>
    <div class="form-group">
        <label>Contact Detail</label>
        <input type="text" class="form-control" placeholder="Enter Contact Number" name="mobile" minlength="10" maxlength="10" required="" />
    </div>
    <div class="form-group">
        <label>Type</label>
        <select class="form-control">
            <option>Inquiry</option>
            <option>Complaints</option>
            <option>Feedback</option>
            <option>Others</option>
        </select>
    </div>
    <div class="form-group">
        <label>Message</label>
        <textarea class="form-control" rows="3" cols="5" placeholder="Enter Your Message Here..." id="message" minlength='10' required=""></textarea>
    </div>
    <button type="submit" class="btn btn-primary btn-lg">Send</button>
</form>

Javascript

$(document).ready(function () {
    $('#contact').validate({
        rules: {
            firstname: {
                required: true,
                minlength: 5,
            },
            useremail: {
                required: true,
            }
        },
        errorClass : 'has-error',
        validClass : 'has-success',
        highlight:function(element, errorClass, validClass) {
            $(element).parents('div').addClass(errorClass).children().removeClass(errorClass);
            $(element).parents('div').removeClass(validClass).children().removeClass(validClass);
        },
        unhighlight: function(element, errorClass, validClass) {
            $(element).parents('div').removeClass(errorClass).children().removeClass(errorClass);
            $(element).parents('div').addClass(validClass).children().removeClass(validClass);
        }
    });
})

Fiddle here

Error and valid stying can be done using this CSS:

.has-error
{
    background-color: rgb(255, 0, 0);
}
.has-success
{
    background-color: rgb(0, 255, 0);
}
Jacques Snyman
  • 4,115
  • 1
  • 29
  • 49
3

besides the spelling error. If you are using this plugin Jquery validation. You are missing the name attribute for the input.

<input type="email" class="form-control" placeholder="Enter Your Email" id="useremail" name="useremail"/>

According to the documentation, you have to assign each element that needs to be validated the 'name' attribute and specify the validation rule with i.e. name="firstname".

I suggest trying this even if you are not using the mentioned plugin.

Mr.GT
  • 310
  • 4
  • 12