//スタイルシート読み込み jQuery(function () { var d = document; var link = d.createElement('link'); link.href = '/css/alert.css'; link.rel = 'stylesheet'; link.type = 'text/css'; var h = d.getElementsByTagName('head')[0]; h.appendChild(link); }); var overlay_class = 'overlay'; var alert_box = 'alert_box'; //ブラウザの中央にオリジナルのアラートを表示させる //(GoogleChrome等では画面上部にアラートが出て気付きにくい為) //mes:表示するメッセージ //is_confirm:ConfirmかAlertか //elm:クリックされた要素 //method:アラート処理後に実行したい関数 //メッセージ以外の引数は、必要ない場合は記述しなくても落ちないよう対応 function org_alert(mes, is_confirm, elm, method) { //bodyへオーバーレイを挿入 if (jQuery('body').find('.' + overlay_class).length == 0) jQuery('body').append("
"); jQuery('.' + overlay_class).css('display', 'block'); //。の後は改行を入れる mes = mes.replace('。', '。
'); //アラートボックスを挿入 if (jQuery('body').find("." + alert_box).length == 0) { jQuery('body').append("

" + mes + "

"); } //既にアラートボックスがある場合はメッセージのみ変更 else { jQuery('.' + alert_box).children('.mes')[0].innerHTML = mes; //一旦ボタンを削除 jQuery('.' + alert_box).children('.button').remove(); } if (is_confirm == true) jQuery('.' + alert_box).append("
はいいいえ
"); else jQuery('.' + alert_box).append("
はい"); //アラートボックスの表示位置を調整 changeStampAreaSize(); jQuery('.' + alert_box).css('display', 'block'); jQuery('.yes').bind('click', function () { alert_end(); yes_function(elm, is_confirm, method); }); //「いいえ」選択時の処理 jQuery('.no').bind('click', function () { alert_end(); }); //キーボード押下時の処理 jQuery(window).keydown(function (e) { //現在選択されているタブ var select = jQuery('.' + alert_box).children('.button').children('.select'); //選択されているタブがYesかNoか var is_yes = select[0].className.indexOf('yes') > -1; //Enter押下時:現在選択されているタブを実行 //Enterキー→13、Escキー→27 if (e.keyCode === 13 || e.keyCode === 27) { alert_end(); //「はい」選択時若しくはalert時の処理(alert時はEscキーを押してもYes押下時と同じ処理を行う) if (is_confirm == false || (e.keyCode === 13 && is_yes)) yes_function(elm, is_confirm, method); } //Tab押下時:タブを切り替え //Tabキー:9、←キー:37、→キー:39(alert時は切り替える必要がないのでconfirm時のみ実行) else if ((e.keyCode === 9 || e.keyCode === 37 || e.keyCode === 39) && is_confirm) { select.removeClass('select'); if (is_yes) jQuery('.' + alert_box).children('.button').children('.no').addClass('select'); else jQuery('.' + alert_box).children('.button').children('.yes').addClass('select'); } return false; }); //submitボタンの場合、一旦submitを中止する為input name="xxx"が送信されない。 //その為hiddenで同名のフィールドを追加しPostする。 if (elm != undefined) { if (elm.type == 'submit' || elm.type == 'image') { jQuery('').attr({ type: 'hidden', name: elm.name, value: 'true' }).appendTo(jQuery(elm).parents('form')); } } return false; } //「はい」選択時の処理 function yes_function(elm, is_confirm, method) { if (method != undefined) method(); if (elm != undefined) { //クリックされた要素がaタグの場合 if (elm.href != undefined) { var href = elm.href; //リンク先が取得でき、且つJavascriptで無ければリンク先へ移動 if (href != null && href != "" && href.indexOf("javascript") == -1) { if (elm.target == '_blank') window.open(elm.href, '_blank'); else location.href = elm.href; } } else { var form = jQuery(elm).parents('form'); if (form != null && is_confirm) jQuery(elm).parents('form').submit(); } } } //アラート画面終了時 function alert_end() { jQuery('.' + alert_box).css('display', 'none'); jQuery('.' + overlay_class).css('display', 'none'); //アラート以外のinputやtextエリア等のキーボード入力が無効になっているため、 //有効にする。 jQuery(window).unbind(); } function changeStampAreaSize() { //スクロール量と画面サイズから表示中の画面中央の座標を割り出す var sc = document.documentElement.scrollTop || document.body.scrollTop var y = window.innerHeight ? window.innerHeight : jQuery(window).height(); var w = window.innerWidth ? window.innerWidth : jQuery(window).width(); var max_height = jQuery(document).height() > jQuery('body').height() ? jQuery(document).height() : jQuery('body').height(); jQuery('.' + overlay_class).height(max_height); var p = jQuery('.' + alert_box); var base_height = p.height() / 2; var base_width = p.width() / 2; p.css('top', (sc + y / 2) - base_height - 100); p.css('left', w / 2 - base_width); }