人気マンガがだれでも無料♪電子コミック読み放題!!

画面遷移の際に確認ダイアログを表示させたいです。

ブログやメールなどの編集中(入力途中)に他画面へのリンクをクリック、更新などを行おうとすると「編集中の内容は破棄されますがよろしいですか?」というような確認ダイアログを表示させるようにしたいです。
表示されたダイアログでは「はい」「いいえ」が選択でき、「いいえ」を選択すると編集画面にとどまるようにしたいです。

IEやFirefoxではjavascriptで行えるようですが、SafariやOperaではブラウザの仕様もあってダイアログが表示されず困っております。

今まで参考にしたサイトは以下になります。
http://d.hatena.ne.jp/kaz_29/20090303/1236047477
http://css-eblog.com/javascript/js-onbeforeunloa …
http://semooh.jp/jglycy/jquery-plugins/form-obse …
上記サイトの方法を試しましたがやはりうまくは行きませんでした。

クロスブラウザ対応で、jqueryなどでこのような動作を行ったりなどできるものはありませんでしょうか。
よろしくお願いします。

このQ&Aに関連する最新のQ&A

A 回答 (3件)

unload → confirm → 「いいえ」 → return false;


でできるかと思って調べてみましたが、
「いいえ」を選んでもreturn falseは無視?されて
ページ遷移してしまうそうです。

http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.ph …

ページを閉じようとしてconfirm → 「いいえ」 → 「閉じない」
が出来てしまうと問題があるということらしく。

自分だったらaリンクonclickとinput type=submitに全部同じ関数をくっつけ、
confirmを呼び出して「いいえ」を選んだらreturn false;にします。
unloadはユーザーの自己責任なのかなぁと思うので。

もし「それはすでに調べ済み」だったらスミマセン^^;
    • good
    • 0

beforeunloadは以前調べましたが、DOM Level 3で未定義でした。



onbeforeunload時のwindow.openが効かないのです | OKWave
http://okwave.jp/qa/q5846460.html

クロスブラウザを考慮するなら、unload ではないかと思います。
    • good
    • 0

jQueryなら、


「jQueryUI dialog」
http://jqueryui.com/demos/dialog/
「LightView」
http://www.nickstakenburg.com/projects/lightview/
「ThickBox 3.1」
http://jquery.com/demo/thickbox/

でポップさせれば別窓じゃなくてもできますよ。
    • good
    • 0

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QonClickに複数の関数を挿入する方法

初心者なのですがアニメーションの関数anime1、anime2、anime3を作成し、onClickに下記のように設定しました。
クリックするとアニメーション2つの設定ではは動くのですが、3つ目を設定すると動かなくなります。
通常はこのような設定はしないものなのでしょうか?
教えてください。
よろしくお願いします。
<INPUT type="button" value="START" onClick="anime1(), anime2()">・・・OKです。
<INPUT type="button" value="START" onClick="anime1(), anime2(),anime3()">・・・動きません。

Aベストアンサー

セミコロンでつなぐのが常道ですが、3つ以上なら
別途function化したほうが、可読性が高くなると
思います。

QconfirmのOK・キャンセルを押した後の操作制御

いつもお世話になっています。

<script language="JavaScript">
<!--
function startConfirm(){
confirm("本当によろしいですか?");
}
// -->
</script>
</head>

(中略)

<form action="next.asp" target="_top" name="me">
<td>
<input TYPE="submit" value="全削除" name="all_del" onclick="startConfirm()">
</td>
</form>

と、このようなボタンを押したときに確認メッセージを表示させています。
キャンセルを押した場合にnext.aspに遷移せず、自分の画面に戻る
または他の画面に遷移させたいのです。

startConfirm()の中に処理を書けば良いのでしょうが、哀しいかな、わかりません(涙)。
やり方をご存知の方、教えてください。

alertでOKを押された時の処理を任意に行う方法も教えていただけたら嬉しいです。

いつもお世話になっています。

<script language="JavaScript">
<!--
function startConfirm(){
confirm("本当によろしいですか?");
}
// -->
</script>
</head>

(中略)

<form action="next.asp" target="_top" name="me">
<td>
<input TYPE="submit" value="全削除" name="all_del" onclick="startConfirm()">
</td>
</form>

と、このようなボタンを押したときに確認メッセージを表示させています。
キャンセルを押した場合にnext.aspに遷移せず、自分の画面に戻る
または他の画面に遷...続きを読む

Aベストアンサー

こんにちはさん、xruzです。
submitボタンにこだわらずscriptでsubmit()すれば柔軟に対応できますよ。
こんな感じではいけませんか?

<html>
<head>
<title>submit</title>
</head>
<script language="javascript">
<!--
function frmSubmit() {
var errFlag=true;
// チェックとか処理とかをします
if(errFlag==false) {
// alert("Err"); // エラー処理かな
return;
}
if(confirm("Send Ok?")) {
// document.frm.target="main"; // 表示先の変更
// document.frm.action="hoge.asp"; // リンク先の変更
document.frm.submit();
} else {
// this.location.href="jump.cgi"; // キャンセルした場合のリンク先?
}
}
//-->
</script>
<body>

<form method="post" action="" name="frm" target="_self">

<input type="button" value="send" onclick="frmSubmit();">
</form>

</body>
</html>

がんばってくださいね。

こんにちはさん、xruzです。
submitボタンにこだわらずscriptでsubmit()すれば柔軟に対応できますよ。
こんな感じではいけませんか?

<html>
<head>
<title>submit</title>
</head>
<script language="javascript">
<!--
function frmSubmit() {
var errFlag=true;
// チェックとか処理とかをします
if(errFlag==false) {
// alert("Err"); // エラー処理かな
return;
}
if(confirm("Send Ok?")) {
// document.frm.target="main"; // 表示先の変更
// document.frm.action="hoge....続きを読む

QJSPの処理の途中で、JavaScriptの処理をしたい

プログラムをJSPで記述している(<% %>タグ)のですが、
JavaScriptのalertやconfirmなどのポップアップするダイアログを
表示したいのです。それは可能なのでしょうか?

Aベストアンサー

No.2の回答に対する回答(変な日本語ですが)です。

JSPとJavaScriptの処理の行われる順番について考えていないと
エラーになることがありますよ。
大まかな流れは、
 JSPのソースをサーバ側で解釈、実行する(HTMLのソースを吐き出す)
  ↓
 クライアントに生成したソースを送信する
  ↓
 クライアント側のブラウザがソースを解釈する
  ↓
 ソースの中のJavaScriptを、ソースの上のほうから順次実行する
  ↓
 同時に、通常の表示(HTMLの解釈)も実行される

 と、こういう流れですので、例えば、JavaScriptで値を入力し、
JSPでその値を使おうとすると、エラーとなります。

 具体的にやりたいこと(やろうとしていること)を書いていただいたほうが
適切に回答できますが、上記が今考えられるエラーの原因です。

QリンクでPOSTデータを送信することは可能ですか?

はじめまして。
Submitボタンを使用せずに<A>リンクでFORMのPOSTメソッドデータを送信することは可能でしょうか?
やはりURLにデータを付加して送信するしかないのでしょうか?
ご教授よろしくお願い致します。

Aベストアンサー

javascript を使えば可能です。大雑把にはこんな感じ。

・パラメータが全部 hidden な form を記述しておく(ブラウザでは表示されない)
・<a href> では、その form を submit するように javascript を記述する

試してないですけど、こんな感じ。

<form name=f method=POST action="http://どこか">
<input type=hidden name=x1 value=v1>
</form>

<a href="javascript:document.f.submit()">リンクから submit</a>

QJavaプログラムからポップアップを表示する方法

現在、Javaプログラムにおいて以下のような
ことを実施したいと考えています。

1。画面上(JSP)からSQLで使用する条件を選び、ボタンをクリック
1.JavaからDBにアクセスし、検索結果件数を取得
2.件数をポップアップで表示し、「はい」もしくは「いいえ」を選択することで、処理を続行させるかさせないかを決定

1及び2については問題なく行えるのですが、3のやり方がよくわかりません。

DBの検索結果が仮に3件だとすると、ポップアップで
「3件が選択されました。処理を続行しますか」というメッセージとともに
「はい」、「いいえ」ボタンを表示させます。

ここで表示するポップアップは、できればJavaScriptで行いたいのですが可能なのでしょうか。
もしJavaScriptでなくても、とにかくポップアップが表示できるようにしたいと考えています。

大変恐縮ですが、よろしくお願いします。

Aベストアンサー

補足の方も読ませて頂きました。

> ここで私の不明点として、1つめが(2)から(3)への遷移になります。
> つまり、Javaプログラム本体からJavaScriptを呼び出すこと。

厳密に言うと、JavaからJavascriptを「呼び出す」ことはできません。
JavaおよびJSPは、ブラウザからのHTTPリクエストに対して
応答としてHTML(含Javascript)を「返す」ことしかできません。
そのHTMLを表示してJavscriptを実行するのは、ブラウザの役目です。

syu1219_aさんがおっしゃる「JavaがJavascriptを呼ぶ」というのは
おそらく、Javaが応答を返して自動的にconfirmのダイアログが出て
「はい」か「いいえ」の確認をユーザに促す、ということなのかと
想像します。

それであれば、Javascriptの「onLoad」イベントが使えます。
onLoadイベントは、ブラウザが読み込み終わると発生しますが、
それを<body>タグにつければ、ページ読み込み完了時に
イベントが発生し、希望のfunctionを呼び出すことができます。
以下のようにすれば、ページ表示と同時に確認を行えます。
----------
<html>

<body onLoad="kakunin()">

</body>
</html>
<script language="Javascript">
<!--

function kakunin() {
  var msg = "検索結果は";
  msg += "<bean:write property="kensakuKekka"/>";
  msg += "です。\n処理を実行しますか?";
  if(confirm(msg) == true) {
    :
  }
  else {
    :
  }
  :
}

//-->
</script>
----------

> そして、2つめが(3)から(4)への遷移になります。
> つまり、JavaScriptで選択された結果をJavaプログラムに返すこと。

ブラウザ側からJavaの方へ情報を伝えるには、
入力された値にしろ、押したボタンにしろ、何にしても
<form>に情報を持たせてsubmitで送信するしかありません。
情報を何らかの形でsubmitに載せることになります。

「確認でどちらを選択したか」というプロパティを新たに設ければ
Java側で受け取ることができます。
<input type="hidden">を使い、submitに載せるといいでしょう。
----------
<html>

<form method="post" action="hogehoge">

<input type="hidden" name="sentaku">

</form>

</html>
<script language="Javascript">
<!--

function kakunin() {
  var f = document.forms[0];
  var msg = "検索結果は";
  msg += "<bean:write property="kensakuKekka"/>";
  msg += "です。\n処理を実行しますか?";
  f.elements["sentaku"].value = confirm(msg);
  f.submit();
}

//-->
</script>
----------

あとは、form.actionを書き換えることによって
ちがうActionを呼ぶということもできるでしょう。

補足の方も読ませて頂きました。

> ここで私の不明点として、1つめが(2)から(3)への遷移になります。
> つまり、Javaプログラム本体からJavaScriptを呼び出すこと。

厳密に言うと、JavaからJavascriptを「呼び出す」ことはできません。
JavaおよびJSPは、ブラウザからのHTTPリクエストに対して
応答としてHTML(含Javascript)を「返す」ことしかできません。
そのHTMLを表示してJavscriptを実行するのは、ブラウザの役目です。

syu1219_aさんがおっしゃる「JavaがJavascriptを呼ぶ」というのは
おそ...続きを読む

QリクエストからArrayListのデータが取得出来ない

いつもお世話になっております。

表題の通り、リクエストからArrayListのデータが取得出来ないのです。

javaで、
ArrayList cmArray = new ArrayList();
データベースからデータ取得
request.setAttribute("category",cmArray.toArray());

jspで
ArrayList list = new ArrayList();
list = (List)request.getAttribute("category");
と取得しようとしています。
そうすると、java.lang.ClassCastExceptionが発生してしまいます。

どなたか分かる方がいましたら、ご教授下さい。
よろしくお願い致します。

Aベストアンサー

requestには、cmArray.toArray()でObjectの配列が入ってます。
なのでJSPでListで受け取ろうとしてClassCastExceptionが発生しています。

request.setAttribute("category",cmArray);
でいいんではないでしょうか。

Q空欄のテキストフィールドの判定の方法

HTMLのフォームに入力されたテキストフィールドの値より処理を変化させる
ロジックを作ろうと下記のようにプログラムしました。
テキストフィールドに何か入力して送信した場合は、elseの処理を正常に行ってくれるのですが、
未入力でsubmitした場合だと、処理が止まってブラウザ上には真っ白な画面しか表示されません。
やはり判定文が悪いのでしょうか?
未入力のテキストフィールドの判定方法を教えてください。

-----------------------------------------------------
String tf1 = request.getParameter("text1");
String tf2 = request.getParameter("text2");

if((tf1 == null) || (tf2 == null)) {
 HttpSession session = request.getSession();
 session.setAttribute("errmessage", "未入力の項目があります。");

 RequestDispatcher dispatcher
    = request.getRequestDispatcher("/err.jsp");
 dispatcher.forward(request, response);
}
else {
 //テキストフィールドに何かが入力されている場合の処理
}

HTMLのフォームに入力されたテキストフィールドの値より処理を変化させる
ロジックを作ろうと下記のようにプログラムしました。
テキストフィールドに何か入力して送信した場合は、elseの処理を正常に行ってくれるのですが、
未入力でsubmitした場合だと、処理が止まってブラウザ上には真っ白な画面しか表示されません。
やはり判定文が悪いのでしょうか?
未入力のテキストフィールドの判定方法を教えてください。

-----------------------------------------------------
String tf1 = request.getPara...続きを読む

Aベストアンサー

空白の文字列が設定されているはずなので、

if (tf1 == null || tf1.equals("") || tf2 == null || tf2.equals("")) {
  …
}

とした方が良いでしょう。tf1 == null は、フォームの方の記述を間違う
可能性もあるので、念の為残しておきましょう。

Qリンクをクリックした時にformからPOST送信したい。

HTML、PHP、JavaScript等でサイトを作っているのですが・・・。

【実現出来ている例】
<form name="form1" method="post" action="Next.php" onSubmit="return InputCheck()">
 <input type="submit" value="送信">
</form>
 submitボタンを一つ置いて、それがクリックされた場合に
formの内容をPOSTで送信する。

【実現したい例】
<form name="form1 method="post">
 <a href="Next.php" onClick="???">???</a>
</form>
 formの中のリンクをクリックされた場合に、formの内容を
POSTで送信したいのですが、その実現方法がわかりません。
GETで送るという手もあり得ますが、今回はどうしてもPOST
したいのですが。

Aベストアンサー

<form name="form1" method="post" action="Next.php">
<a href="#" onClick="document.form1.submit();">???</a>
</form>

onclick内の対象がform1としてあてているので、
アンカータグは別にform内に記述しなくても大丈夫です

form内にhidden等でnameとvalueを持ったパラメータがあればそれも送られます

アンカータグから動的にvalueを変更したい場合は、
document.form1.hogename.value = 'hoge';
等をsubmit()の前に行えば可能です

ただしform内に
<input type="hidden" name="hogename" value="">
を記述する等、変更先パラメータの元を用意する必要がありますのでご注意下さい

QformでPOSTするのと同じ動作をボタンとjavascriptで実現したいのですが

<form name="myFORM" method="POST" action="xxx.php">
<input type="text" name="NAME">
<input type="submit" value="送信">
</form>
上記と同じ動作を
<button onclick="fpost('tanaka','POST','xxx.php')">送信</button>
とjavascriptで実現したいのですが可能でしょうか?
可能でしたらどのようなスクリプトになりますでしょうか?
document.myFORM.submit();とかではなく、formタグを全く使わずPOSTしページ遷移したいのですが。
XMLHttpRequestとlocation.replace()とかでできるのでしょうか??
すみませんがよろしくお願い致します。

Aベストアンサー

削除に関しては各行でform処理をするとして、更新の方は
各行のデータを総なめして更新するようなものになるのでしょうか・・・

DOMに関しては、こんな風にしてやると汎用性があがります。
<script>
function hoge(){
var f=document.getElementById("f0")
if(f) f.parentNode.removeChild(f);
var f = document.createElement("form");
f.setAttribute("action","***.php");
f.setAttribute("method","get");
f.setAttribute("id","f0");
f.style.display="none";
var i = document.createElement("input");
i.setAttribute("name","fuga");
i.setAttribute("value","xxx");
f.appendChild(i);
var i = document.createElement("input");
i.setAttribute("name","piyo");
i.setAttribute("value","yyy");
f.appendChild(i);
document.getElementsByTagName("body")[0].appendChild(f);
f.submit();
}
</script>
<input type="button" value="test" onClick="hoge()">

削除に関しては各行でform処理をするとして、更新の方は
各行のデータを総なめして更新するようなものになるのでしょうか・・・

DOMに関しては、こんな風にしてやると汎用性があがります。
<script>
function hoge(){
var f=document.getElementById("f0")
if(f) f.parentNode.removeChild(f);
var f = document.createElement("form");
f.setAttribute("action","***.php");
f.setAttribute("method","get");
f.setAttribute("id","f0");
f.style.display="none";
var i = documen...続きを読む

QJSP/サーブレットで一般的な入力チェックの仕組みについて

JSP/サーブレットで一般的な入力チェックの仕組みについて

いつもお世話になります。

JSP/サーブレットでWebシステムを作っています。
特別なフレームワークは使っておらず、素のJavaだけで作っているのですが、JSP/サーブレットでWebシステムを開発する場合で、入力チェックでエラーがあった場合、
下記のような動作を実現したいのですが、一般的にはどのような作りになるのでしょうか。

・画面の入力内容はそのまま
・メッセージ領域にエラーメッセージを表示
・エラーがあった項目を赤くする

これらはJavaScriptでしか実現する方法は無いように思っていますが、できればJavaScriptは
使用しない方向で、最悪3番目はできなくてもよいです。

宜しくお願い致します。

Aベストアンサー

JSPを使っているならできると思うけど。

・画面の入力内容はそのまま
・メッセージ領域にエラーメッセージを表示
・エラーがあった項目を赤くする

どれもHTMLの加工の問題でしょう?

Servletがリクエストを受け取る
→入力チェック
→エラーがあったら前の画面のJSPを表示する
→JSP表示の際に、入力された内容をHTMLにセットする
→メッセージ領域にえらーメッセージを表示する
→ついでにエラー項目も赤くする

全部JSPでできる内容よね。


一般的なつくりとしては
まず、その画面の入力項目に対応したBeanを用意する。
Servletがリクエストを受け取り、リクスエトを解析しBeanに格納する。
Beanをその画面用のチェッククラスで入力チェックする。
エラーがなければ次画面を、エラーがあれば呼び出し元画面のJSPを要求。
エラーがあった場合、エラーメッセージをセッションなりリクエストなりに格納。
JSP表示時にBeanに格納されている内容を出力。
エラーメッセージが格納されていればそれを出力。
こんな感じね。

赤くするのはBeanについでにフラグを持たせておけば
JSPで判断できるんじゃない?

JSPを使っているならできると思うけど。

・画面の入力内容はそのまま
・メッセージ領域にエラーメッセージを表示
・エラーがあった項目を赤くする

どれもHTMLの加工の問題でしょう?

Servletがリクエストを受け取る
→入力チェック
→エラーがあったら前の画面のJSPを表示する
→JSP表示の際に、入力された内容をHTMLにセットする
→メッセージ領域にえらーメッセージを表示する
→ついでにエラー項目も赤くする

全部JSPでできる内容よね。


一般的なつくりとしては
まず、その画面の入力項目に対応したBeanを用意...続きを読む


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング