0

ユーザーがクリックすると確認ボックスを表示するリンクがあります。ユーザーが[はい]をクリックすると、指定されたページに移動します。それ以外の場合は、同じページにとどまります。これが私のリンクと私の関数コードです:

<script type='text/javascript'>
   function checkDelete(){
      var i = confirm("Are you sure you want to delete?");
      if(i){
         return true;
      }else{
         return false;
      }
   }
</script>
<a href="operation.php?action=delete&id=<?php echo $id?>" onclick='checkDelete'>Delete</a>

問題は、「いいえ」またはキャンセルボタンをクリックしても同じページに表示されないことです。常にページoperation.phpにリダイレクトされます。しかし、onclickでインラインJavaScriptコードを記述しても、正常に機能します。

4

4 に答える 4

1

いくつかの問題があります。

JavaScriptコードcheckDeleteは単に変数を参照しますcheckDelete; それ以上は何もしません。あなたはおそらくそれを呼び出すつもりでした、そしてさらに、それを呼び出した結果を返します:

// in onclick
return checkDelete();

ifステートメントでの使用returnは冗長です。confirm:の結果を返すだけです。

function checkDelete() {
    return confirm('...');
}

この時点で、インライン化することもできます。

// in onclick
return confirm('...');

インラインJavaScriptを使用することは一般的に嫌われています。JavaScriptからイベントハンドラーをバインドすることをお勧めします。たとえば、リンクのIDがdelete_link、の場合、次のように使用できます。

// should only be run when delete_link exists
// (e.g. in a DOM ready handler or a script after delete_link)
// this code does not accommodate for older versions of Internet Explorer
document.getElementById('delete_link').addEventListener('click', function(e) {
    if(!confirm('...')) {
        e.preventDefault();
    }
}, false);
于 2012-06-05T04:00:59.160 に答える
1

試してみてくださいonclick="return checkDelete();"。適切なJavaScript式を使用すると、JavaScriptを使用しようとするときに役立ちます;)

同時に、次のように変更checkDeleteしてみてください。

function checkDelete() {return confirm("Are you sure you want to delete?");}
于 2012-06-05T04:01:08.747 に答える
1

試す:

<a href="operation.php?action=delete&id=<?php echo $id?>" onclick='return checkDelete();'>Delete</a>

<script type='text/javascript'>
   function checkDelete(){
      var i = confirm("Are you sure you want to delete?");
      if(i){
         return true;
      }else{
         return false;
      }
   }
</script>
于 2012-06-05T04:01:51.837 に答える
1

タグは<a href=''>常にターゲットにリダイレクトされます。操作を返しfalseたりキャンセルしたりするという概念は、フォームを送信する場合にのみ適用されます。

于 2012-06-05T04:01:53.920 に答える