1

我有一个包含隐藏字段的 aspx 页面

<asp:HiddenField ID="hdnObjectID" runat="server" />

我想在外部 javascript 文件中获取隐藏字段的值。我已使用此代码获取 hdnObjectID 的值

var objectID = parseInt($('#' + '<%= hdnObjectID.ClientID %>')[0].value);

但它没有得到价值。

4

7 回答 7

0

您无法评估 JavaScript 文件中的服务器代码。

如果您使用静态客户端 ID,您可以安全地硬编码外部文件中的值。否则,将其作为参数从页面传递给您的 JavaScript 方法。

// in file
function foo(clientId){
    var element = document.getElementById(clientId);
}

<%-- in page markup -->
<script>
    foo("<%=hdnObjectId.ClientID %>");
</script>


// or, register in codebehind in OnPreRender (or where suitable)
于 2012-07-31T09:51:19.520 回答
0

尝试这个:

Page.ClientScript.RegisterStartupScript(this.GetType(), "Assign", "assignValues('"+ hdnSchedule.Value +"');", true);
于 2014-09-03T10:58:10.403 回答
0

在您的 Javascript 中尝试以下操作: var objectID = parseInt(document.getElementById('hdnObjectID').value);

于 2012-07-31T09:47:35.770 回答
0

如果服务器变量写在外部 JS 文件中,您将无法访问它。我已经在这个线程中解释了这个原因

在您的 aspx 页面中,声明一个全局 javascript 变量

var hdnTextBox = <%= hdnObjectID.ClientID %>;

在您的外部文件中使用此变量。

如果您使用的是 asp.net 4.0,则可以控制该控件的客户端 ID。有关如何控制它,请参见此处

另一种选择是在 ScriptManager.RegisterStartupScript 的帮助下从服务器端编写 JS。在您的 page_load 中编写以下代码

 ScriptManager.RegisterStartupScript(this, GetType(), "SomeName","SomeFunc("          +hdnObjectID.ClientID + ");", true);

并在您的外部文件中

function SomeFunc(hdnObjectClientId){
 //
}

并将客户端 ID 传递给函数

于 2012-07-31T09:48:44.420 回答
0

您不能<%= hdnObjectID.ClientID %>在外部 js 文件中使用,因为这些服务器端表达式不会在外部 js 文件中进行评估。

不过,您可以在页面中创建一个函数以从该隐藏字段中获取值。

于 2012-07-31T09:48:59.567 回答
0

试试这个在你的外部 javascript

var Controls = null; 
function readHidden(){alert(Controls.hdn_val.value);}     

在 .aspx 文件中

<script type="text/javascript" src="myexternal.js"></script> 
<script type="text/javascript"> 
Controls = {hdnfld = '<%=hdn_val.ClientID %>'};
</script>
于 2012-07-31T10:41:40.977 回答
0

在 findElement javascript 方法中传递“hdnObjectID”以获取对象

<script type="text/javascript">

    function findElement(e) {
        var foundElement = null;

        var elements = window.document.forms[0].elements;

        for (i = 0 ; i < elements.length; i++) {
            if (elements[i].id.indexOf(e) > -1) {
                foundElement = elements[i];
                break;
            }
        }

        return foundElement;
    }
 </script>

此方法将返回具有可能名称的对象。但是,如果有两个名称相似的对象,则此方法将需要修改

希望对你有帮助 :)

于 2012-08-26T11:44:29.177 回答