/**
* 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);
// ボタン部分の生成