代码之家  ›  专栏  ›  技术社区  ›  Drew

结合PHP的JavaScript警报框

  •  2
  • Drew  · 技术社区  · 17 年前
    echo "<td><a href='delete.php?id=$row[id]&&category=$a' onclick='return confirm(\'are you sure you wish to delete this record\');'>delete</a></td>";
    

    8 回复  |  直到 15 年前
        1
  •  3
  •   Ken    17 年前

    使用GET方法来更改状态也是一个坏主意——看看关于何时使用GET和何时使用POST的指南( http://www.w3.org/2001/tag/doc/whenToUseGet.html#checklist )

        2
  •  3
  •   ConroyP    17 年前

    我认为$row[id]在您的echo语句中的计算不正确。试试这个:

    echo "<td><a href='delete.php?id={$row[id]}&&category=$a'...
    

    但这更容易阅读:

    ?><td><a href="delete.php?id=<?=$row[id];?>&amp;category=<?=$a;?>" onclick="return confirm('are you sure you wish to delete this record');">delete</a></td><?
    

    另外,在js中添加一个函数来处理确认:

    function confirm_delete() {
        return confirm('Are you sure you want to delete this record?');
    }
    

    return confirm_delete() .

        3
  •  2
  •   cole    17 年前

    确认删除.js

    window.addEvent('domready', function(){
        $$('a.confirm_delete').each(function(item, index){
            item.addEvent('click', function(){
                var confirm_result = confirm('Sure you want to delete');
                if(confirm_result){
                    this.setProperty('href', this.getProperty('href') + '&confirm');
                    return true;
                }else{
                    return false;
                }
            });     
        });
    });
    

    它所做的只是查找带有class=“confirm\u delete”的任何“a”标记,并附加与脚本相同的代码,但我发现它更易于使用。它还向地址添加了一个确认变量,这样,如果关闭JavaScript,您仍然可以将它们发送到带有确认提示的屏幕。

        4
  •  2
  •   Peter Mortensen Pieter Jan Bonestroo    15 年前

    您应该尽量将JavaScript与HTML分开。最初输出普通HTML,然后将事件添加到链接中。

    printf('<td><a id="deleteLink" href="delete.php?id=%d&amp;category=%s">Delete</a></td>', $row["id"], $a);
    

    然后页面上的某个地方出现一些JavaScript代码:

    document.getElementById('deleteLink').onclick = function() {
        return confirm("Are you sure you wish to delete?");
    };
    

    然而,从您的示例来看,您可能有一个包含多行的表,每行都有自己的删除链接。这使得使用这种样式更具吸引力,因为您不会输出 confirm(...) 一遍又一遍的文字。

    如果是这种情况,你显然不能使用 id 在链接上,因此最好使用类。 <a class="deleteLink" ...

    如果您使用的是JavaScript库,如jQuery,这非常简单:

    $('.deleteLink').click(function() {
        return confirm("...");
    });
    
        5
  •  1
  •   ceejayoz    17 年前
    echo "<td><a href='delete.php?id=$row[id]&&category=$a' onclick='return confirm(&quot;are you sure you wish to delete this record&quot;);'>delete</a></td>";
    

    使用Firefox的HTML语法突出显示对您有利。:-)

        6
  •  0
  •   Darryl Hein IrishChieftain    17 年前

    echo '<td><a href="delete.php?id=' . $row[id] . '&category=' . $a . '" onclick="return confirm(\'are you sure you wish to delete this record?\');'>delete</a></td>';
    

    我将双引号改为单引号,反之亦然。然后我对变量进行了浓缩,因此PHP不需要计算。

    另外,我不确定onclick上的返回是否会在用户单击no时阻止链接被“单击”。

        7
  •  -1
  •   roenving    17 年前

    如果你坚持使用回音功能:

    echo "<td><a href='delete.php?id=$row[id]&&category=$a' onclick='return confirm(\\'are you sure you wish to delete this record\\');'>delete</a></td>";
    

    --因为转义是从php解释器处理的!-)

        8
  •  -1
  •   Brad    17 年前

    这是我用在同一类型的东西。

    我不会回显/打印它,我会将html放在两者之间?>html

    ?> <td><a href="?mode=upd&id=<?= $row[id] ?>&table=<?= $table ?>">Upd</a> / <a href="?mode=del&id=<?= $row[id] ?>&table=<?= $table ?>" onclick="return confirm('Are you sure you want to delete?')">Del</a></td> <?php