Onclick返回确认无法在Jquery Mobile中运行?

时间:2012-11-07 20:45:41

标签: php javascript jquery html jquery-mobile

我正在使用简单的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时OKCancel按钮都进入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页面。这就是它开始不起作用的地方。

一旦重定向发生,确认对话框就不再起作用了。

3 个答案:

答案 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>