2013-07-05 35 views
1

在這裏,我用JavaScript來刪除僱員...確認/重定向功能不工作 - JavaScript的

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

通過使用錨標記我打電話的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」

+0

ya但它不起作用... –

+0

它還能做什麼,只是沒有?爲什麼你在該鏈接中有一個提交按鈕? – Bergi

+0

現在我編輯它,但它不工作... @ Bergi –

回答

0

您正在通過單擊該按鈕提交某種表單。該提交過程將取代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> 
7

因爲您正在嵌套<input type="Submit"/><a>的內部,點擊該按鈕與點擊<a>不同,相反,在<a>可以完成它的工作之前,它不會「提交」(請閱讀您已在的頁面,刷新頁面)。

Simple demo你在哪裏不要轉到谷歌。

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

Bergi具有pointed out我描述的行爲是不通用(你好歌劇,IE)除非<form>元素存在,所以for example以下

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

會把你直接發送到監獄不經過跨所有瀏覽器收集200英鎊

此外,這隻適用於頁面重定向;其他的腳本可能會在頁面更改之前觸發,最容易觀察的是console.logalert等。

+1

很好地說明了他所遇到的問題,而不是直接的答案。 +1 – defau1t

+1

至少Opera *會*轉到Google。它需要一個'

',[這個小提琴](http://jsfiddle.net/L4Bvw/1/)將導致維基百科。 – Bergi

+0

@Bergi我在_Chrome_和_FireFox_中測試過,喜歡假裝_IE_是一個糟糕的夢,那麼你告訴我_Opera_有時比其他兩個更接近它?一個噩夢!無論如何,答案更新。 –