var MAIL_DOMAIN = [ "gmail.com", "docomo.ne.jp", "yahoo.co.jp", "ezweb.ne.jp", "i.softbank.jp", "icloud.com", "softbank.ne.jp", "hotmail.com", "yahoo.ne.jp", "hotmail.co.jp", "nifty.com", "ybb.ne.jp", "au.com", "outlook.jp", "ymobile.ne.jp" ]; var MailAutocomplete = /** @class */ (function () { function MailAutocomplete() { } MailAutocomplete.prototype.exec = function () { var email = $('#js_email'); email.autocomplete({ minLength: 5, delay : 0, source: function (request, response) { var input = email.val(); var atIndex = input.indexOf("@"); if (atIndex != -1) { // @あり var inputDomain_1 = input.substring(atIndex + 1); if (inputDomain_1 == "") { return response(MAIL_DOMAIN.map(function (domain) { return input + domain; })); } var pfMatchDomain = MAIL_DOMAIN.filter(function (domain) { return domain == inputDomain_1; }); if (pfMatchDomain.length > 0) { return response(pfMatchDomain.map(function (domain) { return input.substring(0, atIndex) + "@" + domain; })); } else { var fMatchDomain = MAIL_DOMAIN.filter(function (domain) { return domain.lastIndexOf(inputDomain_1, 0) === 0; }); if (fMatchDomain.length > 0) { return response(fMatchDomain.map(function (domain) { return input.substring(0, atIndex) + "@" + domain; })); } else { return response([]); } } } else { // @なし return response(MAIL_DOMAIN.map(function (domain) { return input + "@" + domain; })); } }, select: function (data) { $('#js_email').val(data); // exValidation用 setTimeout(function () { $('#js_email').blur(); }, 300); } }); }; return MailAutocomplete; }()); $(function (){ var email = new MailAutocomplete(); email.exec(); });