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

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

ただいまの
回答率

90.61%

  • JavaScript

    15971questions

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

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

解決済

回答 3

投稿

  • 評価
  • クリップ 0
  • VIEW 1,104

anna10

score 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コードが間違っていると思うのですが。どなたか教えていただけないでしょうか?よろしくお願い致します。
  • 気になる質問をクリップする

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 3

checkベストアンサー

0

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

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

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2015/03/18 09:00

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

    キャンセル

  • 2015/03/18 12:03

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

    キャンセル

  • 2015/03/18 12:06

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

    キャンセル

  • 2015/03/18 18:46

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

    キャンセル

0

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

<!DOCTYPE html>
<html lang="ja">
<head>
    <meta charset="UTF-8">
    <title></title>
</head>
<body>
    <form action="?" name="form_out" id="form_out">
        <input id="" type="checkbox" name="submit">
        <input type ="submit" value="削除" onClick="return Delete();">
    </form>
    <script>
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 del = document.forms.form_out; // <-- 修正

    var judge = confirm('本当に削除しますか?');


    //確認ダイアログに対してOKをクリックした場合
    if(judge==true){

        //削除処理を行うサーブレットにPost送信
        // del.action = 'MerchandiseSrv_Delete'; // <-- テストしにくかったので削除
        del.submit(); 
 
    }/*①*/
    return false; // <-- 修正
}
    </script>
</body>
</html>


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

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

0

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

ではどうでしょうか?

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

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

  • ただいまの回答率 90.61%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

  • 受付中

    JavaScriptでのValueセット

    お世話になります。 つたないコードで申し訳ありませんが、 JavaScriptの処理がうまくいかず悩んでおります。 どこをどう直せば良いのか、アドバイス頂けると幸いです。 ●何

  • 解決済

    servletのエラーメッセージ

    サーブレットで演算プログラムを作成しました。しかし、こうじゅつのエラーメッセージが出てしまいます。 どう修正すればよいでしょうか。 「サーブレット」 package form

  • 受付中

    JavaScriptの綺麗なコードの書き方

    JavaScriptの綺麗なコードの書き方がわかりません。 例えば下記のような関数があった場合、皆さんならどのようにまとめますか?   function userLogin() {

  • 解決済

    jspのテキストとプルダウンメニューで設定した値をサーブレットで取得する方法

    <select name="grade"><br>  <option value=1>1  <option value=2>2  <option value=3>3  <optio

  • 受付中

    JSのToDoメモ制作について

    以下のコードはJavaScriptのToDoメモです。 書き込んだ内容を追加、保存はうまくいったのですが削除がうまくいきません。削除ボタンを押すとすべて消えてしまいます。 どうすれ

  • 解決済

    hi

    oooooooooooooooooooooooooooooooooo

  • 解決済

    jspページで画面遷移なしにデータベースと連携したい

    お世話になります。 現在、jspページでレジの画面を設計しています。 そして以下のような流れでやろうと考えています。 ①商品コードをリストから選択、個数を入力し、ボタンをクリ

  • 解決済

    JSPでinputタグのname属性をまとめたい

    お世話になっております。 JSP+Servletで開発を進めています。 フォームの中でINPUTタグのname属性をまとめるような方法があったような気がするのですがどのよう

同じタグがついた質問を見る

  • JavaScript

    15971questions

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