$( function () { $.validator.addMethod("strict_email", function(email_address, element) { return this.optional(element) || email_address.match(/^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}$/i); }, "Please provide a valid email address"); $.validator.addMethod("strict_name", function(name, element) { return this.optional(element) || name.match(/^[A-Z\.\s-]{2,}$/i); }, "Names can only include letters, hyphens, periods, and spaces."); $.valHooks.textarea = { get: function (elt) { return elt.value.replace(/\r?\n/g, "\r\n"); } }; // $('input.phone-mask').on('keypress', function (e) { // console.log(e); // console.log('Value on keypress: ', $(this).val()); // var $this = $(this); // var digits = $this.val().trim().replace(/(^1)?\D?/g, ''); // if (e.keyCode < 48 || e.keyCode > 57) { // return false; // } else if (e.keyCode === 49 && digits === '') { // return false; // } else if (digits === '') { // $this.val('('); // } // }); // $('input.phone-mask').on('change', function (e) { // console.log(e); // console.log('Value on keydown: ', $(this).val()); // console.log('Incoming charCode: ', e.charCode); // console.log('charCode as string: ', String.fromCharCode(e.charCode)); // }); function formatPhoneNumber(number, movingToThe) { var digits = number.trim().replace(/(^1)?\D?/g, ''); var n = Math.min(digits.length, 10); // valid US phone #s have at most 10 digits: xxx-xxx-xxxx var mask = ''; console.log('n: ', n); if (n === 0) { return ''; } else if (n > 0 && n <= 3) { mask = '(' + digits; mask += ((movingToThe === 'right' && n === 3) ? ') ' : ''); // } else if (n === 3) { // mask = '(' + digits; // mask += (movingToThe === 'right' ? ') ' : ''); } else if (n > 3 && n <= 6) { mask = '(' + digits.substring(0, 3) + ') ' + digits.substring(3, n); mask += ((movingToThe === 'right' && n === 6) ? '-' : ''); } else if (n > 6) { mask = '(' + digits.substring(0, 3) + ') ' + digits.substring(3, 6) + '-' + digits.substring(6, n); } return mask; // for (var d = 0; d < digits.length; d++) { // if (d === 0) { // mask += '(' + digits[d]; // } else if (d === 1) { // mask += digits[d]; // } else if (d === 2) { // mask += digits[d] + ') '; // } else if (d === 3 || d === 4) { // mask += digits[d]; // } else if (d === 5) { // mask += digits[d] + ' — '; // } else { // mask += digits[d]; // } // } } $(document).on('keyup blur change', 'input.phone-mask', function (e) { console.log(e); console.log('Value on keyup: ', $(this).val()); var $this = $(this); var old_digits = $this.data('digits'); var old_val = $this.data('val'); var new_digits = $this.val().trim().replace(/(^1)?\D?/g, ''); var new_val = $this.val(); if (old_val !== new_val) { var final_val = formatPhoneNumber($this.val(), 'left'); $this.val(final_val); $this.data('digits', new_digits); $this.data('val', final_val); } // if (e.keyCode < 48 || e.keyCode > 57) { // return false; // } // var $this = $(this); // var digits = $this.val().trim().replace(/(^1)?\D?/g, ''); // console.log('Digits: ', digits); // var mask = ''; // for (var d = 0; d < digits.length; d++) { // if (d === 0) { // mask += '(' + digits[d]; // } else if (d === 1) { // mask += digits[d]; // } else if (d === 2) { // mask += digits[d] + ') '; // } else if (d === 3 || d === 4) { // mask += digits[d]; // } else if (d === 5) { // mask += digits[d] + ' - '; // } else { // mask += digits[d]; // } // } // console.log('Masked phone number: ', mask); // $this.val(mask); }); });