koohik
V2EX  ›  问与答

使用 confirm 弹出对话框,点击取消为什么还执行代码了?

  •  
  •   koohik · Mar 25, 2015 · 6171 views
    This topic created in 4242 days ago, the information mentioned may be changed or developed.
    举个简单的例子
    <script type="text/javascript" language="javascript">
    <!--
    <script type="text/javascript" language="javascript">
    function confirmAct()
    {
    if(confirm('确定要执行此操作吗?'))
    {
    return true;
    }
    return false;
    }
    //-->
    </script>
    <?php
    $filename = 'file.txt';
    // 写入的字符
    $word = $_REQUEST['id'];
    if(!empty($word)){
    file_put_contents($filename, $word."\r\n",FILE_APPEND);
    }
    ?>
    <a href="t1.php?id=123" onclick="return confirmAct();">设置</a>
    明明点击取消了,还依然往file.txt写入数据了?是什么原因呢
    8 replies  •  2015-03-25 16:45:11 +08:00
    panlilu
    panlilu
    Mar 25, 2015
    1
    额。。你把前后台弄混了,js的是前台的,php是后台的,而你的代码里面这两者几乎没有关联。。
    koohik
    koohik
    OP
    Mar 25, 2015
    2
    代码保存t1.php试试看
    上面多谢了一个script头,删掉
    chaojie
    chaojie
    Mar 25, 2015
    3
    preventDefault/stopPropagation/returnValue/cancelBubble
    你需要找到一个兼容全浏览器的方法
    koohik
    koohik
    OP
    Mar 25, 2015
    4
    @panlilu 代码保存t1.php试试看
    上面多谢了一个script头,删掉
    kisshere
    kisshere
    Mar 25, 2015 via Android
    5
    preventDefault或者在confirm里面用location.href
    koohik
    koohik
    OP
    Mar 25, 2015
    6
    @kisshere 可不可以直接写在onclick里面?
    lincanbin
    lincanbin
    Mar 25, 2015 via Android
    7
    这样写Onclick的返回值并不会拦截跳转操作,建议把跳转操作写函数里
    jookr
    jookr
    Mar 25, 2015
    8
    1、复杂写法(带判断的,可以同时实现多种行为的判断):
      onclick="{if(confirm('确定要删除记录吗?')){return true;}return false;}"
      
      2、简洁写法
    <a href="javascript:void(0);" onClick="return(confirm('确定要删除吗?'))">设置</a>
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   5213 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 50ms · UTC 01:21 · PVG 09:21 · LAX 17:21 · JFK 20:21
    ♥ Do have faith in what you're doing.