2014-02-28 157 views
0

我一直在试图禁止以某种方式对数据库链接的一些链接的jQuery禁用链接,但我只需要禁用它们取决于$_SESSION[]里面的PHP

echo '<script language="javascript">'; 
echo '$("a").removeAttr("href");'; 
echo "$('a').click(function(event){ 
    event.preventDefault(); 
    alert('No tiene permisos para ingresar'); 
});"; 
echo "</script>"; 

这些都是一些该变薄我做过尝试,但这些链接仍在工作。

+1

你对这里的会话一无所知。会话代码在哪里? – Hardy

+0

请看看这些行是否在你的浏览器“查看源代码”中也请看看是否包含jquery – SajithNair

+0

将'.removeAttr(“href”)'改为'.attr(“href”,“javascript:;”)' – krishna

回答

1

你缺少现成功能:

$(document).ready(function() { 
    // put your code here. 
}); 

DOM之前完全加载大多数的jQuery函数将无法正常工作。

0

首先,请尝试使用此代码为纯JavaScript和得到它的工作(没有PHP)刚刚获得的链接禁用。像这样...应该工作。

<script language="javascript"> 
    function disableLinks(){ 
     $('a').removeAttr('href'); 
     $('a').click(function(event){ 
      event.preventDefault(); 
      alert('No tiene permisos para ingresar'); 
     }); 
    } 

    //trigger the function after the DOM is ready (possible problem) 
    $(document).ready(disableLinks); 
</script> 

如果这不起作用,请在Chrome上使用Javascript控制台并查找错误。确保jQuery已加载。有是与前面的代码,你试图加载页面之前禁用链接的机会。 document.ready确保首先加载DOM。

如果这个作品加入PHP。我建议做PHP部分简单的这样。用这个替换脚本块的最后一行。

<?php 
    if($_SESSION['whatever']=='whatever'){ 
     echo('$(document).ready(disableLinks);'); 
    } 
?> 

这可以做得更干净一点,但这应该让你去。

作为最后一点,一定要在后端强制执行此操作,因为这很容易被绕过,并且如果这是阻止访问的唯一方式,则不安全。

0

使用$ .bind和$ .unbind

$("a").bind("click", function() { 
     alert("The quick brown fox jumps over the lazy dog."); 
}); 

和会话确认只使用解除绑定

$("a").unbind("click"); 
0

您需要

$(document).ready(function() 
{ 
    }); 

附上jQuery代码,您可以看到在此链接中的结果http://jsfiddle.net/2B75J/