PageSourceSearch

https://www.ocnk.net/js/formCheck.js

js ocnk.net collected 2026-10-02 09:49:16 UTC 10,535 bytes, 263 lines download raw bytes

1formCheck = {};
2formCheck.FormInit = function (selector) {
3    if ($(selector).length == 0) {
4        return;
5    }
6    formCheck.checkChangeInputType(selector);
7    var $formElem = $(selector);
8    $formElem.find('input[type=password]').on('input keyup focus blur', function (e) {
9        formCheck.checkPassword(e);
10    });
11    $formElem.find('input[type=text], input[type=email], textarea').on('input keyup focus blur', function (e) {
12        formCheck.FormTextInput(e);
13    });
14    $formElem.find('select').on('change', function(e){
15        formCheck.FormSelectBox(e);
16    });
17    $formElem.find('input:radio').on('change', function(e){
18        formCheck.FormRadioButton(e);
19    });
20    $formElem.find('input:checkbox').on('click', function(e){
21        formCheck.FormCheckBox(e);
22    });
23};
24
25formCheck.checkChangeInputType = function (selector) {
26    var inputType = {}, dataType, dataId;
27    $(selector + " input[type='text']").each(function(i, e){
28        dataType = $(e).data('type');
29        dataId = $(e).attr('id');
30        if (dataType === 'email') {
31            inputType[dataId] = 'email';
32        } else if (dataType === 'postjp' || dataType === 'tel') {
33            inputType[dataId] = 'tel';
34        }
35    });
36    if (inputType) {
37        formCheck.changeInputType(inputType);
38    }
39};
40
41formCheck.addErrorDisplay = function (selector, msg) {
42    if (!selector.length) {
43        return;
44    }
45    var $formPartsElem = $(selector).closest('.form_element');
46    $formPartsElem.addClass('formerror');
47    if (msg.length && $formPartsElem.find('.formerror_desc')) {
48        $formPartsElem.find('.formerror_desc').text(msg)
49        $formPartsElem.find('.formerror_desc').show();
50    }
51};
52
53formCheck.hideErrorDisplay = function (selector) {
54    if (!selector.length) {
55        return;
56    }
57    var $formPartsElem = $(selector).closest('.form_element');
58    $formPartsElem.removeClass('formerror');
59    if ($formPartsElem.find('.formerror_desc')) {
60        $formPartsElem.find('.formerror_desc').hide();
61    }
62};
63
64formCheck.changeInputType = function (obj) {
65    var inputObj = {},
66        key,
67        inputKey;
68    for (key in obj) {
69        var $elem = $('#' + key);
70        if ($elem[0]) {
71            var elem = $elem[0];
72            if (elem.tagName === 'INPUT' && elem.type !== 'hidden') {
73                inputObj[key] = obj[key];
74            }
75        }
76    }
77    for (inputKey in inputObj) {
78        var $inputElem = $('#' + inputKey);
79        if ($inputElem.attr('type')) {
80            $inputElem.attr({type: inputObj[inputKey]});
81        }
82    }
83    return true;
84};
85
86formCheck.convertCharacter = function (inputVal) {
87    var list = {
88        'a':'a','b':'b','c':'c','d':'d','e':'e','f':'f','g':'g','h':'h','i':'i','j':'j','k':'k','l':'l','m':'m','n':'n','o':'o','p':'p','q':'q','r':'r','s':'s','t':'t','u':'u','v':'v','w':'w','x':'x','y':'y','z':'z',
89        'A':'A','B':'B','C':'C','D':'D','E':'E','F':'F','G':'G','H':'H','I':'I','J':'J','K':'K','L':'L','M':'M','N':'N','O':'O','P':'P','Q':'Q','R':'R','S':'S','T':'T','U':'U','V':'V','W':'W','X':'X','Y':'Y','Z':'Z',
90        '0':'0','1':'1','2':'2','3':'3','4':'4','5':'5','6':'6','7':'7','8':'8','9':'9',
91        ' ':' ','!':'!','#':'#','$':'$','%':'%','&':'&','(':'(',')':')','*':'*','+':'+',',':',','-':'-','ー':'-','.':'.','/':'/',':':':',';':';','<':'<','=':'=','>':'>','?':'?','@':'@','[':'[',']':']','^':'^','_':'_','{':'{','|':'|','}':'}'
92    };
93    var re = /[a-zA-Z0-9 !#$%&()*+,-ー./:;<=>?@[]^_{|}]/g;
94    inputVal = inputVal.replace(re, function(m){return list[m];});
95    inputVal = $.trim(inputVal);
96    return inputVal;
97};
98
99// 一番最近チェックしたものはチェックしないようにする
100var latestAcount = '';
101formCheck.FormTextInput = function (obj) {
102    var id = $(obj.target).attr('id');
103    var selector = '#'+id;
104    var dataRequired = $(selector).data('required');
105    var dataType = $(selector).data('type');
106    var error = '';
107    var inputVal = $(selector).val();
108    if (inputVal.length == 0) {
109        if (dataRequired == 1) {
110            formCheck.addErrorDisplay(selector, '入力してください。');
111        } else {
112            formCheck.hideErrorDisplay(selector);
113        }
114        return;
115    }
116    if (dataType === 'account' || dataType === 'new_account') {
117        /*inputVal = formCheck.convertCharacter(inputVal);
118        if (inputVal !== $(selector).val()) {
119            $(selector).val(inputVal);
120        }*/
121        if (!inputVal.match(/^[a-z0-9-]+$/)) {
122            error = "半角英数字で入力してください。";
123        } else if (dataType === 'new_account') {
124            if (inputVal !== latestAcount && (obj.type === 'keyup' || obj.type === 'blur')) {
125                error = formCheck.checkEntryAccount(selector, inputVal);
126            } else {
127                return;
128            }
129        }
130    } else if (dataType === 'email') {
131        if (!inputVal.match(/^[0-9A-Za-z-][+?0-9A-Za-z.._-]*@[0-9A-Za-z_-]+[\.]+[0-9A-Za-z_..-]+[A-Za-z]$/)) {
132            error = "メールアドレスは半角英数字で正しく入力してください。";
133        }
134    } else if (dataType === 'url') {
135        if (!inputVal.match(/^http[s]{0,1}:\/\/[0-9A-Za-z.._~\/:?=-]+$/)) {
136            error = "URLは半角英数字で正しく入力してください。";
137        }
138    }
139    if (error.length) {
140        formCheck.addErrorDisplay(selector, error);
141    } else {
142        formCheck.hideErrorDisplay(selector);
143    }
144};
145
146formCheck.checkEntryAccount = function (selector, inputVal) {
147    // アカウントチェック用コールバック関数
148    var error = '';
149    if (inputVal.length == 0) {
150        error = "入力してください。";
151        latestAcount = "";
152    } else if (inputVal.length < 4 || 16 < inputVal.length) {
153        error = "4文字以上16文字以内で入力してください。";
154        latestAcount = "";
155    } else if (!inputVal.match(/^[a-z]{1}[a-z0-9-]+[a-z0-9]$/)) {
156        error = "半角英(小文字)数字で入力してください。";
157        latestAcount = "";
158    } else if (inputVal == latestAcount) {
159        // 変更なし
160    } else {
161        latestAcount = inputVal;
162        formCheck.addErrorDisplay(selector, 'アカウントIDが重複していないかチェックしています...');
163        var pars = 'mode=checkAccount&account=' + inputVal;
164        $.ajax({
165            type: 'GET',
166            url: '../include/checkEntryForm.php',
167            async: false,
168            data: pars,
169            dataType: 'json'
170        }).done(function(json){
171            if (inputVal == json.account && json.error) {
172                error = inputVal + "は他の方と重複しております。";
173            }
174        });
175    }
176    return error;
177};
178
179formCheck.checkPassword = function (obj) {
180    var id = $(obj.target).attr('id');
181    var selector = '#'+id;
182    var pass1 = $('#login_password1').val();
183    var pass2 = $('#login_password2').val();
184    var regex = /^((?=.*?[a-z])(?=.*?[A-Z])(?=.*?[0-9])|(?=.*?[a-z])(?=.*?[A-Z])(?=.*?[\!\#-&\(-\/\:-@\[\]-`\{-~])|(?=.*?[a-z])(?=.*?[0-9])(?=.*?[\!\#-&\(-\/\:-@\[\]-`\{-~])|(?=.*?[A-Z])(?=.*?[0-9])(?=.*?[\!\#-&\(-\/\:-@\[\]-`\{-~]))[a-zA-Z0-9\!\#-&\(-\/\:-@\[\]-`\{-~]{8,32}$/;
185    if (pass1.length == 0) {
186        formCheck.addErrorDisplay('#login_password1', '入力してください。');
187    } else if (!pass1.match(regex)) {
188        formCheck.addErrorDisplay('#login_password1', '半角の英小文字、英大文字、数字、記号から3種類を混ぜて8~32文字で入力してください。');
189    } else {
190        formCheck.hideErrorDisplay('#login_password1');
191    }
192    if (pass2.length == 0) {
193        if (selector === '#login_password2') {
194            formCheck.addErrorDisplay('#login_password2', '入力してください。');
195        }
196    } else if (!pass2.match(regex)) {
197        formCheck.addErrorDisplay('#login_password2', '半角の英小文字、英大文字、数字、記号から3種類を混ぜて8~32文字で入力してください。');
198    } else if (pass1.length!=0 && pass1 !== pass2) {
199        formCheck.addErrorDisplay('#login_password2', '確認用パスワードが一致しません。');
200    } else {
201        formCheck.hideErrorDisplay('#login_password2');
202        $('#login_password_area').removeClass('form_error');
203    }
204};
205
206formCheck.FormCheckBox = function (obj) {
207    var id = $(obj.target).attr('id');
208    var selector = '#'+id;
209    var dataRequired = $(selector).data('required');
210    var dataType = $(selector).data('type');
211    var checked = false;
212    var t_name, status;
213    $(selector).closest(".input_box").find('input:checkbox').each(function (i, e) {
214        t_name = $(e).attr('name');
215        status = $("input[name='"+t_name+"']").prop('checked');
216        if (status == true) {
217            checked = true;
218            return false;
219        }
220    });
221    if (!checked && dataRequired == 1) {
222        if (dataType === 'agreement') {
223            formCheck.addErrorDisplay(selector, '内容をご確認の上、同意するにチェックを入れてください。');
224        } else {
225            formCheck.addErrorDisplay(selector, '選択してください。');
226        }
227        return;
228    }
229    formCheck.hideErrorDisplay(selector);
230};
231
232formCheck.FormRadioButton = function (obj) {
233    var id = $(obj.target).attr('id');
234    var selector = '#'+id;
235    var dataRequired = $(selector).data('required');
236    var dataType = $(selector).data('type');
237    if (dataType === 'plan') {
238        var $formPartsElem = $(selector).closest('.formerror');
239        $formPartsElem.removeClass('formerror');
240        if ($formPartsElem.find('.formerror_desc')) {
241            $formPartsElem.find('.formerror_desc').hide();
242        }
243    } else {
244        formCheck.hideErrorDisplay(selector);
245    }
246};
247
248formCheck.FormSelectBox = function (obj) {
249    var id = $(obj.target).attr('id');
250    var selector = '#'+id;
251    var dataRequired = $(selector).data('required');
252    var dataType = $(selector).data('type');
253    var error = null;
254
255    var selectVal = $(selector).val();
256    if (selectVal == '') {
257        if (dataRequired == 1) {
258            formCheck.addErrorDisplay(selector, '選択してください。');
259            return;
260        }
261    }
262    formCheck.hideErrorDisplay(selector);
263};

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.