3 つのボタンがある jquery ダイアログ ボックスがあります。ユーザーがリンクをクリックしたときに、href を変数に取り込み、リンクが実行されないようにし、保存、破棄、またはキャンセルのオプションを含むダイアログ ボックスを表示したいと考えています。保存または破棄時に、クリックしたリンクに移動したい。私はphp/jqueryで作業しています。
ユーザーがリンク「A」をクリックし、ダイアログボックスでキャンセルをクリックし、リンク「B」をクリックしてダイアログボックスで破棄を選択した場合を除いて、すべてがうまく機能しています。ブラウザは「B」ではなくリンク「A」に移動します"!
私は何を間違っていますか?
これが私のコードです。以下で詳しく説明します。
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 は常に設定されています。デッド リンクは現在、関数に「no」を渡します。ただし、上記の問題はすべて、ライブ リンクとデッド リンクの両方にあります。
関数を呼び出すコードは次のとおりです。
$('a.chk').click(function (event) {
if (check == false) {
var addressValue = $(this).attr("href");
//alert(addressValue);
setConfirmUnload(false);
event.preventDefault();
return myFunction(addressValue);
}
});
ご意見をお待ちしております。
同様の問題を検索しましたが、何も見つかりませんでしたが、この問題を検索する方法がわからないため、見落としている可能性があります。