質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

解決済

3回答

3947閲覧

JavaScriptの確認ダイヤログについて

anna10

総合スコア24

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

0グッド

0クリップ

投稿2015/03/17 11:41

JavaScriptの確認ダイヤログについての質問です。以下のコードにて、チェックボックスをチェックした値について、削除ボタンを押すと「本当に削除しますか?」というダイヤログが表示され、OKを押せば削除処理を行うServletに、キャンセルを押せば元の画面のまま、という流れにしています。以下がコードです。

function Delete(){

//チェックボックスにチェックがされているものには、変数statusに1を代入 for (i = 0; i < document.form_out.elements.length; i++){ if (document.form_out.elements[i].checked){ var status = 1; } } // チェックボックスがすべて未チェックの場合 if(!status){ alert("削除する行を選択してください"); return false; } var del = document.forms("form_out"); var judge = confirm('本当に削除しますか?'); //確認ダイアログに対してOKをクリックした場合 if(judge==true){ //削除処理を行うサーブレットにPost送信 del.action = 'MerchandiseSrv_Delete'; del.submit(); }/*①*/

}

ダイヤログは表示されるのですが、キャンセルを選択した場合も何故かServletに飛んでしまいます。つまり削除処理が行われてしまいます。①の部分に、

}else{
アラート('キャンセルしましたよ');
}
と記述すると、キャンセルをクリック→アラートが表示→削除処理へ、という意味不明な?流れになってしまっています。Servletは削除機能だけなので、恐らくはこのJavaScriptコードが間違っていると思うのですが。どなたか教えていただけないでしょうか?よろしくお願い致します。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

else{
アラート('キャンセルしましたよ');
return false;
}

ではどうでしょうか?

投稿2015/03/18 00:46

Guu

総合スコア142

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

最後にreturn false;を返していないのが原因だと思います。

lang

1<!DOCTYPE html> 2<html lang="ja"> 3<head> 4 <meta charset="UTF-8"> 5 <title></title> 6</head> 7<body> 8 <form action="?" name="form_out" id="form_out"> 9 <input id="" type="checkbox" name="submit"> 10 <input type ="submit" value="削除" onClick="return Delete();"> 11 </form> 12 <script> 13function Delete(){ 14 15 //チェックボックスにチェックがされているものには、変数statusに1を代入 16 for (i = 0; i < document.form_out.elements.length; i++){ 17 18 if (document.form_out.elements[i].checked){ 19 20 var status = 1; 21 } 22 } 23 24 // チェックボックスがすべて未チェックの場合 25 if(!status){ 26 27 alert("削除する行を選択してください"); 28 29 return false; 30 } 31 32 // var del = document.forms("form_out"); 33 var del = document.forms.form_out; // <-- 修正 34 35 var judge = confirm('本当に削除しますか?'); 36 37 38 //確認ダイアログに対してOKをクリックした場合 39 if(judge==true){ 40 41 //削除処理を行うサーブレットにPost送信 42 // del.action = 'MerchandiseSrv_Delete'; // <-- テストしにくかったので削除 43 del.submit(); 44 45 }/*①*/ 46 return false; // <-- 修正 47} 48 </script> 49</body> 50</html>

後、var del = document.forms("form_out"); は、var del = document.forms["form_out"]; var del = document.forms.form_out; のような気がします。

投稿2015/03/18 00:46

ymknjugg

総合スコア131

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ベストアンサー

その定義されたDelete関数はどのように呼び出しているのでしょうか?

lang

1<button onclick="Delete()">削除</button> 2or 3<form onsubmit="Delete()"><input type="submit" value="削除"></form> 4or else ?

投稿2015/03/17 11:52

hello-world

総合スコア1342

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

anna10

2015/03/18 00:00

回答ありがとう御座います。呼び出し方法としては以下のやり方になります。 <input type ="submit" value="削除" onClick="return Delete();">
退会済みユーザー

退会済みユーザー

2015/03/18 03:03

Typeにsubmitを指定すると、JavaScriptとは別にsubmitが行われるので、type="button"とすれば良いとおもいます。
hello-world

2015/03/18 03:06

<input type ="submit" value="削除" onClick="return Delete();"> ですと、 1. Delete()関数の実行 2. input の通常のクリックイベント 3. form のsubmitイベント の順に実行されます。 Delete()関数でfalseを返すことで、続く (2), (3)のイベントがキャンセルされるようになります。
anna10

2015/03/18 09:46

重ねての回答有難う御座います。submitをbuttonに変更すると、問題なく処理を中断する事が出来ました。今までほぼ無意識でやってきたので、これからはこのようなことがないようにしたいと思います。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問