使用tel来阻止对锚标记的默认:不起作用

时间:2015-01-22 10:15:14

标签: javascript jquery

当用户点击电话号码时,它不应该在桌面和移动设备上执行任何操作,而应拨打该号码。我认为解决方案就像在桌面上返回false或preventDefault一样简单,但到目前为止它似乎无法工作:

<a href="tel:555555">555-555</a>

我正在使用mouseup(),因此它只能在桌面上阻止它。该功能运行但浏览器仍尝试打开另一个应用程序。

$('a[href^="tel"]').mouseup(function (e) {
    e.preventDefault();
    return false;
})

是否有一个简单的解决方案实际上有效,或者是检测移动设备的最佳方法,并更改 href 属性,如其他问题所示?

感谢下面的答案。 mouseup()运行但无法阻止默认。这是使用modernizr的最终代码:

$('a[href^="tel"]').on('click',function (e) {
    if ($("html").hasClass("no-touch")) {
        e.preventDefault();
    }
});

2 个答案:

答案 0 :(得分:2)

你可以这样做:

$('.no-touch a[href^="tel"]').on('click',function (e) {
    e.preventDefault();
});

如果你需要它在触摸设备上工作,并且正在使用Modernizr(看起来像),你可以这样做:

$('a[href^="tel"]').on('click',function (e) {

   if (!Modernizr.touch) {
       e.preventDefault();
   }

    ... my touch code ...
});

答案 1 :(得分:0)

尝试

function callMethod(){
  //do stuff here
}
$('a[href^="tel"]').on('click',function (e) {
    e.preventDefault();
    callMethod();
})

$('a[href^="tel"]').on('touchstart',function (e) {
    callMethod();
})