2011-07-13 55 views
1

在我的母版頁,我有以下的ActionLink:如何防止HTML.ActionLink上的默認設置?

<%=Html.ActionLink("Reset State", "ResetState", "State", null, new { id = "resetButton" })%> 

在我看來,從該母版頁inherts,我有以下click事件定義:

$(document).ready(function() { 
    $("#resetButton").click(function (e) { 
     var context = org.testportal.context; 
     var appId = context.currentApplicationId; 
     var userId = context.currentUserId; 
     var hwid = context.currentHwid; 

     if (contextIsValid()) { 
      $.get('/State/ResetState', { applicationId: appId, userId: userId, hwid: hwid }, 
    function (data) { 
     openDialogBox(data); 
    }, "json"); 
     } 
     else { 
      var data = { message: "Invalid Context" }; 
      openDialogBox(data); 
     } 
     e.preventDefault(); 
    }); //resetState 
}); 

目前,當用戶點擊鏈接,「重置狀態」鏈接使用NULL參數向我的控制器操作發出GET請求。點擊事件永遠不會發生,並且事件的默認不會停止(所以它會出現)。上面的javascript被添加到我的視圖的頁腳中。

使用Firebug我可以看到事件綁定$(document).ready()。這時在頁面上找到$(「#resetButton」)。當事件發生時,我使用手錶確認了這一點。

爲什麼我的js可能不會被解僱?

感謝

否認

我是一個丁格爾。我在腳本中發現了一個js錯誤。

回答

1

我通常爲了防止點擊事件的默認行爲添加return false

$(document).ready(function() { 
    $("#resetButton").click(function (e) { 
     var context = org.testportal.context; 
     var appId = context.currentApplicationId; 
     var userId = context.currentUserId; 
     var hwid = context.currentHwid; 

     if (contextIsValid()) { 
      $.get('/State/ResetState', { applicationId: appId, userId: userId, hwid: hwid }, 
    function (data) { 
     openDialogBox(data); 
    }, "json"); 
     } 
     else { 
      var data = { message: "Invalid Context" }; 
      openDialogBox(data); 
     } 
     return false; 
    }); //resetState 
}); 

如果仍不能阻止默認行爲,那麼你的活動不具有約束力,這意味着你的resetButton不存在當document.ready被調用時。

0

如果你有一個ID =「鏈接」錨,這怎麼可能阻止默認行爲:

$('#linl').click(function (e) { e.preventDefault(); } 

如果你想要特定種類的所有超鏈接有此行爲:

$('a[name=modal]').click(function (e) {    
    e.preventDefault(); 
    .... 
} 

此處任何<a name="modal" ...>link</a>都將阻止默認行爲。

這是我如何加載模態窗口的超鏈接。

希望它有幫助。

謝謝