PageSourceSearch

https://ndltd.org/wp-content/plugins/memberpress/js/validate.js?ver=1.14.1

js ndltd.org collected 2026-09-24 08:55:40 UTC 3,036 bytes, 85 lines download raw bytes

1/** Some basic methods to validate form elements */
2var mpValidateEmail = function (email) {
3  //In case the email is not entered yet and is not required
4  if(!email || 0 === email.length) {
5    return true;
6  }
7
8  // https://stackoverflow.com/a/46181/6114835
9  // 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,}))$/;
10  var re = /^(([^<>()\[\]\.,;:\s@\"]+(\.[^<>()\[\]\.,;:\s@\"]+)*)|(\".+\"))@(([^<>()[\]\.,;:\s@\"]+\.)+[^<>()[\]\.,;:\s@\"]{2,})$/i; //Accepts unicode???
11  return re.test(email);
12
13  //OLD, but doesn't work super well
14  // var filter = /^[A-Z0-9._'%+-]+@[A-Z0-9.-]+\.[A-Z]{2,25}$/i;
15  // return filter.test(email);
16};
17
18var mpValidateUrl = function(url) {
19  var re = /(https?:\/\/)?(www\.)?[-a-zA-Z0-9@:%._\+~#=]{2,256}\.[a-z]{2,6}\b([-a-zA-Z0-9@:%_\+.~#()?&//=]*)/;
20  return re.test(url);
21};
22
23var mpValidateNotBlank = function(val) {
24  var str = val.trim();
25  return (str && str.length > 0);
26};
27
28var mpValidateFieldNotBlank = function($field) {
29  var notBlank = true;
30
31  if(!$field.is(':visible')) {
32    // Pass validation on fields that are not visible
33  }
34  else if ($field.is('input') || $field.is('select') && !$field.hasClass('mepr-multi-select-field') || $field.is('textarea')) {
35    notBlank = mpValidateNotBlank($field.val());
36  }
37  else if ($field.hasClass('mepr-checkbox-field')) {
38    notBlank = $field.find('input').is(':checked');
39  }
40  else if ($field.hasClass('mepr-radios-field') || $field.hasClass('mepr-checkboxes-field') || $field.hasClass('mepr-multi-select-field')) {
41    var input_vals = [];
42    var selector = $field.hasClass('mepr-multi-select-field') ? 'option:selected' : 'input:checked';
43
44    $field.find(selector).each(function (i, obj) {
45      input_vals.push(true);
46    });
47
48    notBlank = input_vals.length > 0;
49  }
50
51  return notBlank;
52};
53
54var mpToggleFieldValidation = function(field, valid) {
55  field.toggleClass('invalid', !valid);
56  field.toggleClass('valid', valid);
57
58  if(field.hasClass('mepr-password-confirm') || field.hasClass('mepr-password')) {
59    field.parent().prev('.mp-form-label').find('.cc-error').toggle(!valid);
60  } else {
61    field.prev('.mp-form-label').find('.cc-error').toggle(!valid);
62  }
63
64  if(field.hasClass('mepr-coupon-code') && valid) {
65    field.prev('.mp-form-label').find('.cc-success').toggle(valid);
66    setTimeout(function() {
67      field.prev('.mp-form-label').find('.cc-success').toggle(!valid);
68      field.removeClass('valid');
69    }, 2000);
70  }
71
72  if(field.hasClass('mepr-countries-dropdown')) {
73    field.closest('.mepr-form').find('.mepr_mepr-address-state .cc-error').toggle(!valid);
74  }
75
76  field.triggerHandler('mepr-validate-field', valid);
77  var form = field.closest('.mepr-form');
78
79  if (0 < form.find('.invalid').length) {
80    // Toggle CSS directly so we can ensure 'block' display
81    form.find('.mepr-form-has-errors').css('display','block');
82  } else {
83    form.find('.mepr-form-has-errors').css('display','none');
84  }
85};

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.