簡體   English   中英

來自JavaScript的HiddenField始終為NULL

[英]HiddenField always NULL, from javascript

當右鍵單擊時,我創建了一個上下文菜單並關聯到Gridview。問題是,當從該上下文菜單中按一個按鈕時,我想從HiddenField獲取值。 但是它總是返回null。 我一直在閱讀,並且我認為可能是因為DOM尚未完全加載,但是我無法使用$(document).ready()來解析它。 可能以錯誤的方式使用它。

讓我知道您是否有任何想法

HTML:

<asp:Content ID="Content1" ContentPlaceHolderID="HeadContent" runat="server">
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
<script type="text/javascript" src="../../../Scripts/PendientesDataGridContextMenu.js"></script>
<link href="../../../Styles/ContextMenu.css" rel="stylesheet" type="text/css" />

<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">

<asp:HiddenField ClientIDMode="static" runat="server" ID="hdnSomeField" />
<asp:HiddenField ClientIDMode="static" ID="fldNumeroCQCallTx" runat="server"  />
<asp:HiddenField ID="fldNumeroCQMalaPractica" runat="server"  />

<div id="myMenu" class="contextMenu">
<table style='width:100%;'>
<tr><td onclick="fnCargarfldNumeroCQCallTxYClickear();">Registrar</td></tr>
<tr><td onclick="fnDelete();">Registrar2</td></tr>
</table>
</div>

<asp:LinkButton ID="lnkCallTx" runat="server"
style="display:none" OnClick="lnkCallTx_Click" />

C#代碼:

protected void Page_Load(object sender, EventArgs e)
    {
        //Associate Context Menu to Gridview
        Page.ClientScript.RegisterStartupScript(GetType(), "Script", "fnLinkearContextMenu(); ", true);

    }

Java腳本:

function fnLinkearContextMenu() {

    $("#myMenu").hide();

    $("table[id$='cntMainPlaceHolder_MainContent_PendientesGestionDeTareasDataGridView'] > tbody > tr").bind('contextmenu', function (e) {
        $("#myMenu").hide();
        e.preventDefault();
        $("#myMenu").css({
            top: e.pageY + "px",
            left: e.pageX + "px",
            position: 'absolute'
        });

        //document.getElementById('<%= lnkCallTx.ClientID %>').value = rowid;
        $("#myMenu").show();

    });

    //Cuando realizan click izquierdo en otra parte de la pagina

    $(document).bind('click', function (e) {
        $("#myMenu").hide();
    });

};

function fnCargarfldNumeroCQCallTxYClickear() {

    var lnkView = document.getElementById('<%=lnkView.ClientID %>').value;
    var lnkCallTx = document.getElementById('lnkCallTx');

    lnkCallTx.click();
};

無法從隱藏字段中獲取值的原因與服務器標簽有關。 在這種情況下,<%%>被稱為服務器標記,因此它們必須擊中后面的代碼(aspx.cs文件)才能解析傳入的值。在.js文件中,沒有代碼,因此,與其解析該值,不如將靜態字符串放入輸出腳本中。

腳本:

document.getElementById('<%= lnkView.ClientID %>').value;

.aspx文件輸出:

document.getElementById('cntMainPlaceHolder_MainContent_lnkView').value;

.js文件輸出:

document.getElementById('<%= linkView.ClientID %>').value;

為了證明這一點,您可以在使用的瀏覽器中打開代碼檢查器(很可能是f12),然后查看包含的腳本。 您將看到其中有<%標記應已解決。 同樣的概念也將適用於JQuery:

$('#<%= lnkView.ClientID %>').val();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM