我正在使用简单的javascript确认代码:
function test_confirm (str)
{
str = (str == '0')? 'Are you sure?' : str
return (confirm(str))? true : false
}
<a href="http://example.com" onclick="return test_confirm(0)">Test</a>
这通常有效,除非我使用Jquery Mobile时OK
和Cancel
按钮都进入URL。预期的行为是Cancel
按钮不应该继续到URL。
即,我通过在html head
中添加以下内容来使用Jquery Mobile:
<link rel="stylesheet" href="http://code.jquery.com/mobile/1.2.0/jquery.mobile-1.2.0.min.css" />
<script src="http://code.jquery.com/jquery-1.8.2.min.js"></script>
<script src="http://code.jquery.com/mobile/1.2.0/jquery.mobile-1.2.0.min.js"></script>
我是否应该注意使javascript confirm()
函数在Jquery Mobile中运行?
Phill Pafford的更新:
它确实适用于纯HTML,但这实际上就是我正在做的事情,并且在使用PHP header('location:')
重定向到同一页面后它无效:
页面list
包含:
<a href="list/delete/1" class="customClick" data-str="0">Delete 1</a>
<a href="list/delete/2" class="customClick" data-str="0">Delete 2</a>
list/delete
操作包含以下内容:
$rest->delete($id);
header('location: http://example.com/list');
如您在点击网址list/delete/1
后所看到的,删除过程将继续,然后重定向回list
页面。这就是它开始不起作用的地方。
一旦重定向发生,确认对话框就不再起作用了。
答案 0 :(得分:1)
这样的事情对你有用吗?
JS
$('.customClick').on('click', function() {
var str = $(this).attr('data-str');
str = (str == '0')? 'Are you sure?' : str;
return (confirm(str))? true : false;
});
HTML
<a href="http://jsfiddle.net/8CDc5/" class="customClick" data-str="0">Test</a>
答案 1 :(得分:0)
我有同样的问题,看起来像“返回假”;并没有阻止传播,无论如何都要遵循链接。通过在返回false之前显式停止传播来解决它。
function test_confirm (e, str)
{
str = (str == '0')? 'Are you sure?' : str
if (!confirm(str)) {
e.stopPropagation();
return false;
}
return true;
}
<a href="http://example.com" onclick="var e=arguments[0] || window.event; return test_confirm(e,0)">Test</a>
答案 2 :(得分:0)
添加此属性
数据的Ajax = “假”
<a data-ajax="false" href="http://example.com" onclick="return test_confirm(0)">Test</a>