我使用 jQuery.UI.Dialog 进行用户确认的Javascript函数:
function confirmation(selector, caption, str){
$('#' + selector).removeAttr('title');
$('#' + selector + ' p').html('');
$('#' + selector).attr('title', caption);
$('#' + selector + ' p').html(str);
$('#' + selector).dialog({
resizeable: false,
modal: true,
buttons: {
'OK' : function(){
return true;
},
Cancel: function(){
$(this).dialog('close');
return false;
}
}
});
}
但是当我用:
调用该函数时 <a href="test.html" onClick="confirmation('conf', 'delete', 'Are you sure?');">Delete</a>
始终提供 TRUE 值。谁能给我一个解决方案?感谢。
答案 0 :(得分:1)
而不是return true;
或return false;
,并根据返回的值执行操作。在您的情况下,一个简单的方法就是在回调函数中执行逻辑。像这样:
function confirmation(selector, caption, str,link){
//here I pass in the link in case you need to know which link was clicked
$('#' + selector).removeAttr('title');
$('#' + selector + ' p').html('');
$('#' + selector).attr('title', caption);
$('#' + selector + ' p').html(str);
$('#' + selector).dialog({
resizeable: false,
modal: true,
buttons: {
'OK' : function(){
//your logic for true case
$(this).dialog('close');
},
Cancel: function(){
//your logic for false case
$(this).dialog('close');
}
}
});
}
更新您的html以传递点击的链接:
<a id="test" href="test.html" onClick="confirmation('conf', 'delete', 'Are you sure?',this);">Delete</a>
我认为最好使用jquery:
$("#test").click(function(event){
event.preventDefault();
confirmation('conf', 'delete', 'Are you sure?',this);
});
答案 1 :(得分:0)
我在您的脚本中进行了一些更改。我想在这种情况下使用return
可能导致错误的解释,因为async
性质。因此,在OK
或Cancel
函数本身中调用您要执行的函数以获得正面和负面响应。这是可能的灵魂之一
答案 2 :(得分:0)
@Aldi Unanto-当您使用链接标记并使用href属性转到另一个页面时,无论您的onclick函数返回false还是true,它总是执行href。因此,您需要将属性设置为“#”并将下一页调用传播为@Khanh TO表示。这是解决问题的最佳方法。