0

我将 ASP.NET 页面DeleteUser.aspx转换为用户控件DeleteUser.ascx

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();" />
4

3 回答 3

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;

    }
于 2013-05-14T10:47:29.453 回答
1

我猜,“<%= txtusercn.ClientID %>”一定是在创建 JavaScript 错误,因为这样的服务器控件引用应该在相关控件所在的页面上。您应该通过参数将 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 来调用方法。如

deleteConfirmation('控件 ID')

于 2013-05-14T10:26:00.740 回答
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;
    }
}
于 2013-05-14T11:06:53.913 回答