访问外部JavaScript中的隐藏字段

时间:2012-07-31 09:43:44

标签: javascript asp.net html ajax

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

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

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

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

但它没有得到价值。

7 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

如果服务器变量是用外部JS文件编写的,那么你将无法访问它。我已在此thread

中解释了这个原因

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

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

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

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

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

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

并在您的外部文件中

function SomeFunc(hdnObjectClientId){
 //
}

并将客户端ID传递给函数

答案 2 :(得分:0)

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

您可以在页面中创建一个功能,以便从该隐藏字段中获取值。

答案 3 :(得分:0)

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

如果您使用static client IDs,则可以安全地对外部文件中的值进行硬编码。否则,将其作为参数传递给页面中的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)

答案 4 :(得分: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>

答案 5 :(得分: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>

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

希望这会对你有所帮助:)

答案 6 :(得分:0)

试试这个:

Page.ClientScript.RegisterStartupScript(this.GetType(), "Assign", "assignValues('"+ hdnSchedule.Value +"');", true);