1

テスト用のJavascriptコードは次のとおりです。

<script type="text/javascript">
    function show_confirm()
        {
            var r=confirm("Are you sure?");
            if (r==true)
            {                   
            }
            else
            {                    
            }
        } 
</script>

そして、これはphpコードです:

<form action="Test.php" method="post">
    <input type="text" name="test"/>
    <input type="submit" value="submit" onclick="show_confirm()"/>
</form>

したがって、送信ボタンをクリックすると、確認ボックスが表示されます。そして、「OK」ボタンをクリックすると、通常の php ページの送信操作と同様に、ページが Test.php にリダイレクトされ、post メソッドが実行されます。または、「キャンセル」ボタンがクリックされた場合、同じページにとどまり、ポストメソッドが実行されないようにしたい。この機能は実装できますか?また、コードを変更するにはどうすればよいですか? PHP はサーバー用で、JS はクライアント用です。私はそれらをこのように混合できるかどうかわかりません。それともAjaxを使うべきですか?手伝ってくれてありがとう!

4

4 に答える 4

3

ボタンから直接実行できます。return false提出をキャンセルします...だから....

<input type="submit" onclick="javascript:return confirm('Are you sure?');">

ユーザーが [OK] をクリックすると、ダイアログは true を返し、それ以外の場合は false を返します。

ここで完全にするために、それは関数形式です。

function show_confirm()
{
  var r = confirm("Are you sure?");
  if(r == true)
  {
     // do something
     return true;
  } else {
     // do something
     return false;
  }
}

編集:ほぼ4年後にこれを読んで、私はそれを変更せざるを得なくなりました.

function show_confirm()
{
  var r = confirm("Are you sure?");
  if(r)
  {
     // do something for true
  } else {
     // do something for false
  }
  return r;
}

で呼び出す<input type="submit" onclick="javascript:return show_confirm();">

これにより、何も選択されていないがダイアログが閉じられている場合も処理されると思います。

注: インライン イベント リスナーは避ける必要があります。JavaScript を使用してイベント リスナーをアタッチします。

于 2011-08-16T15:49:03.143 に答える
0

rlemon の回答をさらに単純化します ( の必要はなくjavascript:return、内側の二重引用符も修正されます):

<input type="submit" onclick="return confirm('Are you sure?')" />
于 2011-08-16T16:05:15.380 に答える
0
<script type="text/javascript">
    function show_confirm()
        {
            var r=confirm("Are you sure?");
            if (r==true)
            {     
                 document.location.href= 'page.php';              
            }
            else
            {                    
                 return false;
            }
        } 
</script>
于 2011-08-16T15:50:28.900 に答える