1

我有一个由 Masterpage 和 contentplaceholders 组成的 asp.net 4.0 框架应用程序。我有一个对用户输入的数据进行验证的 .js 文件。如何调用 ContentPlaceHodler "cphBody" 中的文本框 "txtFirstName"(来自 .js 文件)?

更新(代码)
:.aspx

<asp:TextBox id="txtFirstName" runat="server" CssClass="webForm" Width="250px" MaxLength="100"></asp:TextBox>

<asp:Button id="btnContinue" runat="server" ClientIDMode="Static" onclientclick="document.getElementById('cphHeaderContent_AlertTimeMsgBox').value = GetSeconds(); return ValidateUser(1);" CssClass="webButton" Text="Continue" OnClick="btnContinue_Click" />

.js

function ValidateUser(valFormCount)
{
    var objTextBox;

    objTextBox = document.getElementById("txtFirstName"); 

我已经尝试过document.getElementById("<%= txtFirstName.ClientID %>"),但没有奏效(传递了一个空值)。我怎样才能做到这一点?

4

1 回答 1

6

这个 asp.net 表示法

document.getElementById("<%= txtFirstName.ClientID %>")

在 js 文件中无效

你可以设置ClientIDMode="Static"TextBox. 如果你这样做,你将能够通过 id 获取元素

ASPX

<asp:TextBox ID="txtFirstName" runat="server" ClientIDMode="Static" />

JS

var textbox = document.getElementById("txtFirstName");

关于ClientIDMode="Static"

这种模式完全符合您的想法,它使客户端 ID 成为静态的。这意味着您为 ID 输入的内容将用于客户端 ID。警告,这意味着如果在重复控件中使用静态 ClientIDMode,则开发人员负责确保客户端 ID 的唯一性。

于 2012-06-21T18:24:40.640 回答