2013-05-14 72 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; 

    }