jQuery Form Validation, Only Allow .EDU Email Addresses

前端 未结 3 758
无人及你
无人及你 2020-12-19 16:13

I am using the jquery validate function and plugin located here. http://docs.jquery.com/Plugins/Validation

I am going thrue the js file and i have found the email va

相关标签:
3条回答
  • 2020-12-19 16:41

    You can extend it and add your own rule.

    jQuery.validator.addMethod("edu", function(value, element) {
      // Make it work optionally OR
      //  Check the last 4 characters and ensure they match .edu
      return (this.optional(element) || value.slice(-4) == ".edu"); 
    }, "You must use a .edu email address");
    
    $("#myform").validate({
      rules: {
        field: {
          required: true,
          email: true,
          edu: true
        }
      }
    });
    

    Here is a jsfiddle showing how it all works together and how the errors cascade. Just press the button.

    0 讨论(0)
  • 2020-12-19 16:45

    You probably will still get spam from non .edu email address.

    I would suggest checking the email domain server side.

    So that the email has to be .edu or it won't mail.

    Otherwise if I turn off my JavaScript in my browser I can submit any email address and it will send.

    0 讨论(0)
  • 2020-12-19 16:57

    You don't need custom extension. You can use accept() method: http://docs.jquery.com/Plugins/Validation/Methods/accept#extension

    // input field
    <input type="text" id="eduEmail2" name="eduEmail2" value="abc@123.edu"/>
    
    // validation rule
    eduEmail2: {
        required: true,
        email: true,
        accept: 'edu'
    }
    

    Full example: http://jsfiddle.net/M5TmU/2/ (based on Brombomb's jsfiddle)

    UPDATE

    After xecute's comment - you may use custom regex pattern. In additional-methods.js you have "pattern" method (last one in a file):

    eduEmail3: {
        required: true,
        email: true,
        pattern: /(\.edu\.\w\w)$/
    }
    

    Full example: http://jsfiddle.net/M5TmU/3/

    Of course it's not perfect, but still - you don't need write custom method :)

    ADDITIONAL EDIT: country domain names have two letters, so \w\w\w? is too much - \w\w should do. I left \w\w\w? in fiddle

    0 讨论(0)
提交回复
热议问题