如何传递一个隐藏的字段值在javascript函数在重复器控制

本文关键字:javascript 函数 控制 字段 何传递 隐藏 一个 | 更新日期: 2023-09-27 17:50:53

我试了很多,但还是没有弄清楚。我想在我的javascript函数上传递数据。我将数据保存在隐藏文件中。我想要的是只要我点击按钮它就会调用javascript函数&传递我的隐藏字段值。

<asp:Repeater ID="rptGallary" runat="server" >
   <ItemTemplate>
      <asp:HiddenField ID="hfsportsmanfeedid" runat="server" value='<%# DataBinder.Eval(Container.DataItem,"SportsmanFeedId") %>'/>
      <asp:Button ID="btnLike" runat="server" Text="Like" OnClientClick="Test("How to pass here"));" />
   </ItemTemplate>
</asp:Repeater>

谢谢你的帮助。

如何传递一个隐藏的字段值在javascript函数在重复器控制

你只需要将点击过的元素传递给Test按钮点击

试试下面的代码:

HTML/ASPX标记

<asp:Button ID="btnLike" runat="server" Text="Like" 
OnClientClick="Test(this);" />
Javascript

function Test(element){
  var $btn = $(element) // Gets clicked button
  var hiddenBValue = $btn.prev().val(); // Gets hidden element value
}

文档

  • 上一页()
  • 这应该可以工作!

    你可以这样传递,

    <asp:HiddenField ID="hfsportsmanfeedid" runat="server" value='<%# DataBinder.Eval(Container.DataItem,"SportsmanFeedId") %>'/>
    <asp:Button ID="btnLike" runat="server" Text="Like" OnClientClick="Test('<%# DataBinder.Eval(Container.DataItem,'"SportsmanFeedId'") %>'));" />
    
    脚本

    function Test(value){
       alert(value);
    } 
    

    或者像

    一样使用prev()
    <asp:Button ID="btnLike" runat="server" Text="Like" OnClientClick="Test(this));" />
    
    脚本

    function Test(ths){
       alert($(ths).prev().val());
    } 
    

    这样做-

    <asp:Button ID="btnLike" runat="server" Text="Like" OnClientClick="javascript:Test(document.getElementById('hfsportsmanfeedid').value);" />
    

    从中继器rptGallary_ItemCommand事件中获取隐藏字段的值并将其传递给java脚本

    protected void rptGallary_ItemCommand(object source, RepeaterCommandEventArgs e)
        {
            //add command name to btnLike button let it bet test here
            if (e.CommandName == "test")
            {
                HiddenField hiddenfield = (HiddenField)e.Item.Parent.Parent.FindControl("hfsportsmanfeedid");
                //pass that to javascript
            }
        }