确认/重定向功能不工作-javascript


Confirm/redirect functionality not working - javascript

这里我使用JavaScript删除了一名员工。。。

<script type="text/javascript">
function delet(emp)
{
    var answer = confirm('Are you sure?');
    if(answer)
    {
        window.location='delete.php?emp='+emp;
    }
}
</script>

通过使用锚标记am调用javascript…的函数。。。。

<a onclick="javascript:delet('<? echo $_GET['emp']; ?>')">
<input type="button" name="delete" id="delete" style="background: url('images/del1.jpg')no-repeat;width:50px;height:50px" value=""/></a>           

但我的问题是,它一直在显示警报消息,但在回答警报消息后,它没有重定向到我给出的页面,即"delete.php?emp=+emp"

因为您在<a>中嵌套了一个<input type="Submit"/>,所以单击该按钮与单击<a>不同,而是在<a>完成任务之前,它在任何地方都"提交"(读取到您已经打开的页面,刷新页面)。

简单演示,其中转到谷歌。

<a href="http://google.com/"><input type="Submit"/></a>

Bergi指出,我所描述的行为是不是通用的(hello Opera,IE),除非存在<form>元素,所以例如以下

<form action="jail.php">
    <a href="go.php" onclick="window.location='?collect=£200';">
        <input type="submit"/>
    </a>
</form>

将直接将您送到监狱,而无需通过go在所有浏览器上收取200英镑

此外,这只适用于页面重定向;其他脚本可能会在页面更改之前启动,最容易观察到的是console.logalert等。

您通过点击该按钮提交了一些表单。该提交过程将否决window.location导航请求。一个快速的解决方法是防止这种情况:

<a onclick="event.preventDefault(); delet('<? echo $_GET['emp']; ?>');">
// cross-browser-safe:
<a onclick="delet('<? echo $_GET['emp']; ?>'); return false">

但实际上,带有嵌套按钮的标记非常奇怪。你根本不需要那个链接,只需使用

<form action="delete.php" onsubmit="return confirm('Are you sure');">
    <input type="hidden" name="emp" value="<? echo $_GET['emp']; ?>" />
    <input type="submit" name="delete" id="delete" style="background: url('images/del1.jpg')no-repeat;width:50px;height:50px" value="" />
</form>