/** * フォーム最適化JS * 2015.04 山崎@assiette.co.jp * */ var fo = {'ei':'getElementById','en':'getElementsByName'}; fo.d = document; fo.required = {}; fo.injection = {}; fo.inject = function(n,o,t) { // ここだけjQueryで・・・ var f,code, p = fo.d[fo.en](n)[0].type; if (p=='radio') { code = "f = ($('[name="+n+"]:checked').val() " + o + " '" + t + "');"; } else if (p=='checkbox') { code = "var node=document.getElementsByName('"+n+"'), c=0;for(var i=0; i0);"; } else { code = "f = ($('[name="+n+"]').val() " + o + " '" + t + "');"; } eval(code); return f; /** var node=document.getElementsByName('%n%'), c=0; for(var i=0; i0); */ }; fo.check = function(f) { var result = {}, returnFlg = true, e = fo.d[fo.ei]('error_disp'); if (e) e.style.display = 'none'; for (var name in fo.required) { var eo = fo.d[fo.ei]('err_'+name), t = fo.d[fo.en](name); if (eo) { eo.innerHTML = ''; } if (!t) { continue; } var filled = false; // 条件付き必須 if (fo.injection[name] && fo.injection[name].length > 0) { if (!fo.inject(fo.injection[name][0], fo.injection[name][1], fo.injection[name][2])) { // 必須じゃないので戻ります continue; } } for (var n=0; n 0) { filled = true; break; } } else if (c.type == 'checkbox') { if (c.checked) { filled = true; break; } } else if (c.type == 'radio') { if (c.checked && (c.value && c.value.length>0)) { filled = true; break; } } } else if (c.tagName == "SELECT") { if (c.options[c.selectedIndex].value.length > 0) { filled = true; break; } } else if (c.tagName == "TEXTAREA") { if (c.value.length > 0) { filled = true; break; } } } if (!filled) { returnFlg &= filled; result[name] = fo.required[name]; if (e) e.style.display = 'inline'; } } for(var name in result) { var eo = fo.d[fo.ei]('err_' + name); if (eo) { eo.innerHTML = result[name] + "
"; } if (fo.hilights == 'self') { var t = fo.d[fo.en](name); } } return returnFlg > 0 ? true : false; };