隠しフィールドに続くaspxページがあります
<asp:HiddenField ID="hdnObjectID" runat="server" />
外部のJavaScriptファイルでhiddenfieldの値を取得したい。このコードを使用してhdnObjectIDの値を取得しました
var objectID = parseInt($('#' + '<%= hdnObjectID.ClientID %>')[0].value);
しかし、それは価値を得ていません。
隠しフィールドに続くaspxページがあります
<asp:HiddenField ID="hdnObjectID" runat="server" />
外部のJavaScriptファイルでhiddenfieldの値を取得したい。このコードを使用してhdnObjectIDの値を取得しました
var objectID = parseInt($('#' + '<%= hdnObjectID.ClientID %>')[0].value);
しかし、それは価値を得ていません。
Javascriptで次のことを試してください。varobjectID=parseInt(document.getElementById('hdnObjectID')。value);
外部JSファイルに書き込まれている場合、サーバー変数にアクセスすることはできません。私はこのスレッドでこの理由を説明しました
aspxページで、グローバルjavascript変数を宣言します
var hdnTextBox = <%= hdnObjectID.ClientID %>;
この変数を外部ファイルで使用します。
asp.net 4.0を使用している場合は、コントロールのクライアントIDを制御できます。それを制御する方法については、ここを参照してください
もう1つのオプションは、ヘルプScriptManager.RegisterStartupScriptを使用してサーバー側からJSを作成することです。page_loadに次のコードを記述します
ScriptManager.RegisterStartupScript(this, GetType(), "SomeName","SomeFunc(" +hdnObjectID.ClientID + ");", true);
および外部ファイル
function SomeFunc(hdnObjectClientId){
//
}
クライアントIDを関数に渡します
<%= hdnObjectID.ClientID %>
これらのサーバー側の式は外部のjsファイルで評価されないため、外部のjsファイルで使用することはできません。
ただし、ページに関数を作成して、その非表示フィールドから値を取得することはできます。
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)
外部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>
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名を持つオブジェクトを返します。ただし、このメソッドと同じ名前のオブジェクトが2つある場合は、変更が必要になります
これがお役に立てば幸いです:)
これを試して:
Page.ClientScript.RegisterStartupScript(this.GetType(), "Assign", "assignValues('"+ hdnSchedule.Value +"');", true);