1

我正在使用简单的 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 MobileOKCancel按钮都进入 URL。预期的行为是Cancel按钮不应进入 URL。

即,我通过在 html 中添加以下内容来使用 Jquery Mobile head

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

confirm()为了让 javascript函数在 Jquery Mobile 中工作,我应该注意什么?


菲尔·帕福德的更新:

它确实适用于纯 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');

正如您在单击 URL 后所看到的list/delete/1,删除过程将继续进行,然后重定向回list页面。这就是它开始不起作用的地方。

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

4

3 回答 3

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>​
于 2012-11-08T03:04:56.420 回答
0

我有同样的问题,看起来像“return false;” 并没有停止传播,并且无论如何都遵循了链接。通过在返回 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>
于 2013-01-10T00:48:51.673 回答
0

添加这个属性

数据-ajax="假"

<a data-ajax="false" href="http://example.com" onclick="return test_confirm(0)">Test</a>
于 2013-12-19T06:17:16.640 回答