2014-02-28 64 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/