2013-05-14 73 views
0

我將ASP.NET頁面DeleteUser.aspx轉換爲用戶控件DeleteUser.ascxJavascript未被ASP.NET用戶控件調用

ASPX頁碰到這樣的簡單的JavaScript功能:

function deleteConfirmation() { 

    var xusername = document.getElementById('<%= txtusercn.ClientID %>').value; 
    if (xusername != null && xusername != "") { 
     var userTextBoxId = '<%= txtusercn.ClientID %>'; 
     var uname = document.getElementById(userTextBoxId).value; 
     return confirm('Are you sure you want to delete \'' + uname + '\'?'); 
    } 
    else { 
     alert('Please enter Usercn'); 
     return false 
    } 
} 

現在,因爲這個被轉換成一個用戶控制,DeleteUser.ascx,我首先移動此JavaScript代碼插入在<head>標籤含aspx文件。該頁面引發異常txtusercn不在包含aspx文件的範圍內。

然後我感動的JavaScript功能到一個單獨的JavaScript文件DeleteUser.js和DeleteUser.ascx.cs引用這樣的:

protected void Page_Load(object sender, EventArgs e) 
{ 
    Page.ClientScript.RegisterClientScriptInclude(typeof(DeleteUser),"DeleteUserScript",@"../scripts/DeleteUser.js"); 
} 

JavaScript函數沒有被這裏叫,但是當我檢查包含aspx文件的頁面源代碼,我可以看到javascript函數已正確註冊。

爲什麼javascript函數沒有被調用的頁面是指JavaScript文件DeleteUser.js


編輯即使經過:

調用該函數是這樣的:

<asp:Button ID="btndeleteusercn" runat="server" Text="Delete Usercn" OnClick="btndeleteusercn_Click" OnClientClick="return deleteConfirmation();" /> 
+0

你是如何調用該函數?你的瀏覽器調試控制檯/ firebug/dev tools/etc是什麼?說,如果有任何錯誤? – EdSF 2013-05-14 10:17:12

+0

你檢查過產生的標記(腳本標記)嗎?我敢打賭,正確的文件夾有問題。如果您的腳本文件夾位於站點根目錄,請嘗試使用「/scripts/DeleteUser.js」,順便說一句。你不需要@斜槓(/) – 2013-05-14 10:22:46

+0

@EdSF:我編輯的問題與我如何調用該函數。 – Animesh 2013-05-14 10:29:10

回答

0

文本框的客戶端ID被渲染爲DeleteUser1_txtusercn,所以我改變的JavaScript這樣的,它的工作:

function deleteConfirmation() { 

    var uname = document.getElementById('DeleteUser1_txtusercn').value; 
    if (uname != null && uname != "") { 
     return confirm('Are you sure you want to delete \'' + uname + '\'?'); 
    } 
    else { 
     alert('Please enter UserCN'); 
     return false; 
    } 
} 
1

我猜,「<%= txtusercn.ClientID%>」必須創建JavaScript錯誤a這樣的服務器控制參考應該在相關控制存在的頁面上。您應該通過參數傳遞ControlID到函數,然後它應該工作。

function deleteConfirmation(ctrlID) { 

var xusername = document.getElementById(ctrlID).value; 
if (xusername != null && xusername != "") { 
    var userTextBoxId = ctrlID; 
    var uname = document.getElementById(userTextBoxId).value; 
    return confirm('Are you sure you want to delete \'' + uname + '\'?'); 
} 
else { 
    alert('Please enter Usercn'); 
    return false 
}} 

並通過從那裏傳遞ID來調用Method。 如

deleteConfirmation( '控制的ID')

1

請再試此更新的代碼。

function deleteConfirmation() { 

     var xusername = document.getElementById('<%= txtusercn.ClientID %>').value; 
     if (xusername != null && xusername != "") { 
      return confirm('Are you sure you want to delete \'' + xusername + '\'?'); 
     } 
     else { 
      alert('Please enter Usercn'); 
      return false 
     } 
return true; 

    }