1

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

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

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

我对按钮和文本框的客户端模式使用可预测模式。简单地说,我想通过控制我的按钮来更改显示在文本框(QuantityTxtbx)中的数量(minusBttn 用于减少 quantityTxtbx 值的值,而 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" />
4

1 回答 1

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();
  });
});
于 2013-08-26T10:15:32.237 回答