一起使用Repeater和jQuery

时间:2013-04-21 11:58:23

标签: jquery asp.net repeater clientid

我检查了许多博客关于我的问题的答案,我也从这个网站找到了一些解决方案,我尝试了所有这些。但我不知道为什么会这样?这些解决方案无法解决我的问题,我总是会遇到错误。    最后,我找到了一个我认识到这是正确的解决方案,因为在很多地方这个解决方案都被接受了。但这不能再解决我的问题了。

$("#<%=plusBttn.ClientID%>")

我在尝试此解决方案时遇到此错误:当前上下文中不存在plusBttn。

我将可预测模式用于我的按钮和文本框的客户端模式。简单地说,我想改变数量,在文本框(QuantityTxtbx)中显示,使用控制我的按钮(减去减去amountTxtbx值的值减去,而使用plusBttn同样用于增加值)

实际上我的问题在于通过在jscript中使用ClientID来查找我的控件。

上面显示的代码都在Repeater,ItemTemplate:

我在asp.net页面中的jscript代码:

$(document).ready(function () {

   $("#<%=plusBttn.ClientID%>").click(function () {
      var value = parseInt($("input[id$='QuantityTxtbx']").val());
      value = value + 1;
      $("input[id$='QuantityTxtbx']").val(value);
      });

     $("input[id$='#minusBttn_']").click(function () {
                var value = parseInt($("input[id$='QuantityTxtbx']").val());
                                    if (value > 1)
                                        value = value - 1;
                                    $("input[id$='QuantityTxtbx']").val(value);
                                });
                            });

我的控件;

    <asp:Button ID="minusBttn" runat="server" Text="-"  ClientIDMode="Predictable"/> 
    <asp:TextBox ID="QuantityTxtbx" runat="server" Text='<%#Eval("Quantity") %>' Enabled="False" EnableTheming="False" EnableViewState="False" Height="16px" Width="16px" Wrap="False"ClientIDMode="Predictable">1</asp:TextBox>
    <asp:Button ID="plusBttn" runat="server" Text="+" ClientIDMode="Predictable" />

很抱歉误解,这是我的浏览器端代码:

<script type="text/jscript">

                        $(document).ready(function () {
                            var plusBttn = $("input[id$='minusBttn']");
                            $("input[id$='#minusBttn_']").click(function () {
                                var value = parseInt($("input[id$='QuantityTxtbx']").val());
                                value = value + 1;
                                $("input[id$='QuantityTxtbx']").val(value);

                            });
                            $("input[id$='#minusBttn_']").click(function () {
                                var value = parseInt($("input[id$='QuantityTxtbx']").val());
                                if (value > 1)
                                    value = value - 1;
                                $("input[id$='QuantityTxtbx']").val(value);
                            });
                        });

                    </script>

                    <input type="submit" name="ctl00$ContentPlaceHolder1$Repeater1$ctl01$minusBttn" value="-" id="ctl00_ContentPlaceHolder1_Repeater1_ctl01_minusBttn_0" /> 


                    <input name="ctl00$ContentPlaceHolder1$Repeater1$ctl01$QuantityTxtbx" type="text" value="2" id="ctl00_ContentPlaceHolder1_Repeater1_ctl01_QuantityTxtbx_0" disabled="disabled" style="height:16px;width:16px;" />
                    <input type="submit" name="ctl00$ContentPlaceHolder1$Repeater1$ctl01$plusBttn" value="+" id="ctl00_ContentPlaceHolder1_Repeater1_ctl01_plusBttn_0" />

1 个答案:

答案 0 :(得分:0)

尝试使用以下代码:

$("#<%#Container.FindControl("plusBttn").ClientID%>")

我们已经知道主页chagnes ID基于内容ContentPlaceHolder,并且它与转发器一起迭代新ID,用于数据库连接的任何内容。 jquery .FindControl适用于你的数据绑定plusBttn ClientID。

然后将您的jquery脚本更新为:

$(document).ready(function () {
var plusBttn = $("#<%#Container.FindControl("plusBttn").ClientID%>");
 $("#<%#Container.FindControl("minusBttn").ClientID%>").click(function () {
     $("#<%#Container.FindControl("QuantityTxtbx").ClientID%>").val();
  });
 $("#<%#Container.FindControl("minusBttn").ClientID%>").click(function () {
     $("#<%#Container.FindControl("QuantityTxtbx").ClientID%>").val();
  });
});