我有一個包含三個按鈕的jquery對話框。當用戶點擊一個鏈接時,我想抓住一個變量的href,阻止鏈接執行,並顯示我的對話框,選項爲保存,放棄或取消。在保存或放棄時,我想導航到他們點擊的鏈接。我正在php/jquery中工作。Jquery對話框href變量不在按鈕中更新
除了如果用戶點擊鏈接「A」,並點擊對話框上的取消,然後點擊鏈接「B」並選擇放棄對話框,瀏覽器導航到鏈接「A」而不是「B」!
我在做什麼錯?
這裏是我的代碼,我將更多地解釋如下:
function myFunction(href) {
if (check == false) {
alert (href);
$('#replaceSave').hide();
$("#tabWarn").dialog("open");
$(function() {
alert (href);
$("#tabWarn").dialog({
resizable: false,
height:240,
width:400,
modal: true,
buttons: {
Cancel: function() {
check = false;
setConfirmUnload(true);
$(this).dialog("close");
},
"Discard": function() {
alert(href);
check = true;
setConfirmUnload(false);
alert(href);
if (href != 'no') {
window.location.href = href;
}
$(this).dialog("close");
},
"Save": function() {
saveFunction();
if (href != 'no') {
setTimeout(function() { window.location.href = href; }, 2000);
}
$('#replaceSave').show();
setTimeout(function() { $('#tabWarn').dialog("close"); }, 2000);
},
}
});
});
}
}
HREF的第一個警報始終顯示正確的地址。當我點擊鏈接「A」,然後選擇取消時,所有警報顯示「A」。但是當我回去並點擊鏈接「B」並選擇丟棄時,所有提醒都會顯示鏈接「B」,除了丟棄按鈕內的提醒 - 它們會顯示鏈接「A」。因此,即使點擊了「B」,頁面仍然導航爲「A」。
如果我先點擊鏈接「B」並選擇丟棄,它會正常工作。如果我選擇取消,然後再次點擊並選擇另一個鏈接,它只會工作不正確。
僅供參考,href始終設置。死鏈接當前通過'否'功能。但是,上述所有問題都與實時鏈接和死鏈接有關。
這裏是調用該函數的代碼:
$('a.chk').click(function (event) {
if (check == false) {
var addressValue = $(this).attr("href");
//alert(addressValue);
setConfirmUnload(false);
event.preventDefault();
return myFunction(addressValue);
}
});
我將不勝感激您的投入!
我已經搜索了類似的問題,並沒有找到任何東西,但我可能錯過了一個,因爲我不知道如何搜索這個問題!
你似乎對任何鏈接都使用相同的對話框,你有沒有嘗試先點擊B,然後回去A?如果發生類似(但相反)的問題,那麼解決方案將是關閉對話框並在打開時重新創建對話框。這可以通過許多方式完成。 – cernunnos
是的,我點擊它們的順序並不重要,我會嘗試一次破壞而不是結束。 – dwlorimer
謝謝!毀滅確實解決了這個問題。它現在工作正常。我仍然不確定爲什麼它有這樣的行爲,但我很高興有一些工作。我會+1,但我還沒有足夠的聲望。將它作爲答案發布,我會將其設置爲已接受。再次感謝。 :) – dwlorimer