【问题标题】:Not able to show/hide div using Jquery on Asp.Net RadioButtonList item selection?无法在 Asp.Net RadioButtonList 项目选择上使用 Jquery 显示/隐藏 div?
【发布时间】:2015-09-29 02:09:03
【问题描述】:

我有一个 asp.net RadioButtonList 控件,我想使用 Jquery 根据 RadioButtonList 选择更改隐藏或显示这些控件。请指导我为什么在使用与 in 相同的代码时无法做到这一点

我的 aspx

<asp:Content ID="Content1" ContentPlaceHolderID="head" Runat="Server">
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4/jquery.min.js"
type = "text/javascript"></script> 
<script src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8/jquery-ui.min.js"
type = "text/javascript"></script> 
<link href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8/themes/base/jquery-ui.css"
rel = "Stylesheet" type="text/css" />
<script type="text/javascript">
    $(document).ready(function () {
        $('#rdbrawmtrl input').click(function () {
            var value = $('#rdbrawmtrl input:checked').val();
            if (value == "Cotton") {
                $("#abc").show();
                $("#Panel6").hide();
            }
            if (value == "Wool") {
                $("#Panel6").show();
                $("#abc").hide();
            }
        });
    });
</script>
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" Runat="Server">
<asp:RadioButtonList ID="rdbrawmtrl" runat="server" Style="margin: 0 4px 8px 0;">
                            <asp:ListItem>Cotton</asp:ListItem>
                            <asp:ListItem>Wool</asp:ListItem>
                </asp:RadioButtonList>
<div id="abc" runat="server" style="display:none;">
//Some more controls
</div>
<div id="Panel6" runat="server" style="display:none;">
//some more controls
</div>
</asp:Content>

我什至尝试过显示 jquery 变量“值”,但它没有显示任何结果。

<script type="text/javascript">
    $(document).ready(function () {
        $('#rdbrawmtrl input').click(function () {
            var value = $('#rdbrawmtrl input:checked').val();
            alert(value);
        });
    });
</script>

请指导我哪里做错了。

【问题讨论】:

    标签: javascript jquery html asp.net radiobuttonlist


    【解决方案1】:

    您不能直接通过 javascript 中的 id 获取 HTML 元素。 ASP.net 是服务器端语言,Javascript 是客户端,所以你 需要获取客户端 ID。试试这个..

    $('#<%=rdbrawmtrl.ClientID%>').click(function(){
          // your code here ....
    });
    

    【讨论】:

    • 我什至试过这个,但仍然没有结果。 $("#&lt;%=rdbrawmtrl.ClientID%&gt; input").change(function () { var value = $("#&lt;%=rdbrawmtrl.ClientID%&gt; input:checked").val(); alert(value); });
    • 感谢 Zohaib 的建议。
    【解决方案2】:

    您无法检索值,因为您的 ASP.NET RadioButton 在浏览器中呈现如下:-

    <tr>
      <td>
         <input name="rdbrawmtrl" id="rdbrawmtrl_0" type="radio" value="Cotton">
         <label for="rdbrawmtrl_0">Cotton</label>
      </td>
    </tr>
    
    <tr>
      <td>
         <input name="rdbrawmtrl" id="rdbrawmtrl_1" type="radio" value="Wool">
         <label for="rdbrawmtrl_1">Wool</label>
      </td>
    </tr>
    

    如您所见,将为每个单选按钮动态生成 ID。您应该像这样在name 属性上编写一个选择器:-

    $('input[name="rdbrawmtrl"]').click(function () {
         var value = $(this).val();
         alert(value);
    });
    

    更新:

    拥有母版页不仅会动态更改Id,还会动态更改name 属性。您可以像这样向 RadioButtonList 添加一个类:-

    <asp:RadioButtonList ID="rdbrawmtrl" runat="server" Style="margin: 0 4px 8px 0;" 
                          CssClass="clsrdbrawmtrl">
    

    然后您可以像这样找到其中存在的单选按钮:-

    $('input[type="radio"]',$('.clsrdbrawmtrl')).click(function () {
         alert($(this).val());
    });
    

    【讨论】:

    • 你的意思是这样说-$('input[name="rdbrawmtrl"]').click(function () { var value = $('input[name="rdbrawmtrl"] input:checked').val(); alert(value); });这行不通。
    • 还是不行啊兄弟。我受够了这个问题。当我不使用母版页时,即当我在简单的 HTML 页面中编写此代码时,我的代码运行良好。但它在母版页内容占位符中不起作用。
    • @Omi - 不工作?错误是什么?对我来说效果很好。
    • 感谢兄弟的支持。实际上没有错误。我已经接受了 Zohaib 的回答,上面提到的编辑可以查看。再次感谢您帮助我。
    • @Omi - 好的,兄弟。没问题:)
    【解决方案3】:

    假设ASP 将您的单选按钮呈现如下。

    $("input[name='rdbrawmtrl']:radio").change(function() {
    
        var val = $(this).val();
        alert ( val );
    });
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
    <tr>
      <td>
          <input name="rdbrawmtrl" id="rdbrawmtrl_0" type="radio" value="Cotton" />
         <label for="rdbrawmtrl_0">Cotton</label>
      </td>
    </tr>
    
    <tr>
      <td>
          <input name="rdbrawmtrl" id="rdbrawmtrl_1" type="radio" value="Wool" />
         <label for="rdbrawmtrl_1">Wool</label>
      </td>
    </tr>

    编辑:根据您的评论,尝试以下操作。

    $("input[id^='ContentPlaceHolder1_rdbrawmtrl']:radio").change(function() {
    
        var val = $(this).val();
        alert ( val );
    });
    

    【讨论】:

    • @Ishettyl:我的单选按钮呈现如下:&lt;input id="ContentPlaceHolder1_rdbrawmtrl_0" type="radio" name="ctl00$ContentPlaceHolder1$rdbrawmtrl" value="Cotton" /&gt;&lt;label for="ContentPlaceHolder1_rdbrawmtrl_0"&gt;Cotton&lt;/label&gt; 我已听从您的建议,但它也不起作用。
    • @Ishettyl:按照您的建议后,它给了我一个未捕获的类型错误,它说- $(...).on 不是函数$("input[name='ContentPlaceHolder1_rdbrawmtrl']:radio").on("change", function () {
    • 那是因为你正在加载你不应该加载的 2 个版本的 jQuery(1.4 覆盖 1.8.3)!只使用一个版本,最好是 1.8.3。无论如何,我已经编辑了代码以使用两者。
    • @Ishettyl:即使使用了一个库文件,即 jquery/1.8.3/jquery.min.js,我仍然没有得到任何结果。 $("input[id^='ContentPlaceHolder1_rdbrawmtrl']:radio").on("change", function () { var val = $(this).val(); alert(val); });
    • @Ishettyl:感谢您的支持,我已经接受了Zohaib提交的答案,您可以查看。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-04-17
    • 2015-06-27
    • 1970-01-01
    • 1970-01-01
    • 2010-11-27
    • 2022-01-11
    • 1970-01-01
    相关资源
    最近更新 更多