/** * IE に近い動作にするためのロード処理。 */ $(window).load(function(){ var userAgent = window.navigator.userAgent.toLowerCase(); // IE でアクセスされた場合、幅調整のロジックを実行しないようにする。 if(userAgent.indexOf('msie') != -1 ||userAgent.indexOf('trident') != -1) { // html5mig.css において、x-small としているが、IE で表示された場合大きくなってしまうため、xx-small を適用する。 $(".font-size-1").css('font-size', 'xx-small'); return; } // common.css が読み込まれているか var existCommonCss = false; for(var sheet in document.styleSheets) { existCommonCss = existCommonCss || /\bcommon\.css\b/.test(document.styleSheets[sheet].href); } $("input[type='text']").each(function(index, element) { setAutocompleteAttribute(element); setImeModeDisabled(element, existCommonCss); if(element.outerHTML.match(/\bwidth\b/i)) return; }); $("input[type='search']").each(function(index, element) { setAutocompleteAttribute(element); setImeModeDisabled(element, existCommonCss); }); // TEL特有の処理追加 $("input[type='tel']").each(function(index, element) { setAutocompleteAttribute(element); setImeModeDisabled(element, existCommonCss); }); // パスワードの目の表示 $("input[type='password").each(function(index, element) { setPasswordStyle(element); }); // 非活性処理の再実行(位置がずれてしまうため) window.dispatchEvent(new Event('resize')); // img タグの disabled が true でも onclick が動作してしまう事象の対応。 $("img").each(function(index, element) { // 元々書かれている onclick の関数を取得。 var orgFunc = element.onclick; // onclick に関数が設定されていなければ、処理終了。 if(!orgFunc) return; // 設定されている場合、元々の関数を wrap する。 var wrapFunc = function() { // 要素の disabled が true の場合は、処理しない。 if(element.disabled) return; // 要素の属性に disabled がある場合は、処理しない。 if(element.hasAttribute('disabled')) return; // 元々の onclick 関数を呼び出し。 orgFunc(); }; // ラップした関数を onclick に設定する。 element.onclick = wrapFunc; }); // ファイル選択の表示スタイル設定 $("input[type='file']").each(function(index, element) { setFileInputStyle(index, element); }); }); /** * 指定された element に対し、div 要素でオーバーレイを行う。(非活性化の用途) */ function addOverlay(elem) { if(!elem) return; var clientRect = elem.getBoundingClientRect(); var divGray = document.createElement("div"); divGray.id = elem.id + "_overlay"; divGray.style.position = "absolute"; divGray.style.top = window.pageYOffset + clientRect.top; //divGray.style.left = window.pageXOffset + clientRect.left; divGray.style.width = clientRect.width; divGray.style.height = clientRect.height; divGray.style.background = "rgba(100, 100, 100, .8)"; divGray.style.zIndex = 2147483647; divGray.style.opacity = "0.5"; elem.appendChild(divGray); var funcResize = function() { // リサイズ時に行う処理 window.removeEventListener('resize', funcResize); clearDisableTd(elem.id); toDisableTd(elem.id); } window.addEventListener( 'resize', funcResize, false ); } /** * 指定された element から、div 要素のオーバーレイを消す。 */ function removeOverlay(elem) { if(!elem) return; var divGray = document.getElementById(elem.id + "_overlay"); if (divGray) elem.removeChild(divGray); } function setAutocompleteAttribute(element) { element.setAttribute('autocomplete','off'); } function setFileInputStyle(index, own) { // 元の位置に挿入したいため、自分の次の要素を取得しておく。 var ownNext = own.nextElementSibling; // 元の親要素から input type='file' を外す。 var parent = own.parentNode; own = parent.removeChild(own); // 新しい親要素を生成
var newParent = document.createElement("div"); newParent.className = "form__file"; newParent.appendChild(own); // input type='file' を新しい親要素に追加 // 元の場所に挿入する。(元の位置の次の要素が null の場合は、末尾に追加される仕様) parent.insertBefore(newParent, ownNext); // input 要素の生成 const filename = document.createElement("input"); // input の属性を設定 filename.setAttribute("id", "form__file_text" + index); filename.setAttribute("type","text"); filename.setAttribute("readonly","on"); filename.setAttribute("style", "width: " + own.size * 7.2); filename.className = "filename"; // 親要素に、input を子どもとして追加 newParent.appendChild(filename); // ボタン部分の生成