【问题标题】:Change Image Using Selection in Radio Button List使用单选按钮列表中的选择更改图像
【发布时间】:2014-04-30 08:49:11
【问题描述】:

我有一个项目让我有点不知如何以我想要的方式进行。在一个 ASP.net 页面上,我有一个使用单选列表作为选择选项的表单。此外,我在类别右侧有图像,我想在选择特定单选值时更改它们。

我已经研究了如何使用常规单选按钮控件执行此操作,但我似乎无法克服困难,因为我使用的是 ASP RadioList 控件,我需要有关为什么我无法更改图像的指导使用以下代码:

<script type='text/javascript'>
$(document).ready(function () {
    $("input:radio[name=option]").click(function () {
        var value = $(this).val();
        var image_name;
        if (value == 'AMD') {
            image_name = "AMD_CPU_1.jpg";
        } else {
            if (value == 'Intel') {
                image_name = "Intel_CPU_2.jpg";
            } else {
                image_name = "Icon_CPU.jpg";
            }
        }
    });
});
</script>

我在这里使用 J-Query,我的页面在加载时不会爆炸 - 但是当我选择一个值时,图像不会改变。至于代码的[name=option] 部分,我在HTML代码源中没有name="option"...我有以下内容:

<tr>
    <td><input id="MainContent_CPUBuilderForm1_radCPUType_0" type="radio" name="ctl00$MainContent$CPUBuilderForm1$radCPUType" value="AMD" /><label for="MainContent_CPUBuilderForm1_radCPUType_0">AMD</label></td>
</tr>

改为name="ctl00$MainContent$CPUBuilderForm1$radCPUType"

我试图插入这个作为“选项”的替代品,但仍然没有骰子。有人可以帮助评估我在这里做错了什么吗?一百万谢谢!干杯。

【问题讨论】:

  • 通过您的 cmets 了解其他答案后,我可以看到您使用的是 asp 图像标签。你应该在你的问题中包括这个。 Infoact 多一点你的标记会很有用,你的单选按钮列表和图像标签等。
  • 是的,事后看来是 20/20!
  • 我刚刚提交了一封电子邮件,要求取消该问题。根据您的建议,我将再次以更明智的方式发布问题。谢谢。
  • 这里是新的问题链接:stackoverflow.com/questions/23411488/…

标签: c# javascript jquery html asp.net


【解决方案1】:

您遇到的问题是您没有将图像 URI 的值分配给 &lt;img&gt; 标记。所以你需要在你的函数底部添加一些东西来完成这个任务。由于您的问题中没有该 HTML,我将假设您的代码中有这样的标签:&lt;img id="changingImage" src="" alt="" /&gt;

因此,只需在函数关闭之前将其添加到 Javascript:

$('#changingImage').attr('src', '../Images/' + image_name);

这应该让它为您更改文件,认为您可能需要根据您的配置更改它所在的文件夹。

【讨论】:

  • 我特别没有那个标签。我有以下内容:&lt;td&gt;&lt;asp:Image ID="Image6" runat="server" ImageUrl="~/Images/Icon_CPU.jpg" /&gt;&lt;/td&gt;
  • 此图像是原始图像,类似于占位符,将变为与收音机列表选择相关联的图像。因此,我的$('#changingImage') 版本应该是$('#Image6') 吗?另外,至于asp:Image ID 部分,我是否应该添加自己的src="" 属性,因为您的部分J-Query 加载项包含.attr('src', '../Images/' + image_name) 组件?
  • 但是,在浏览器中运行的页面源代码中,我确实以以下方式显示了这个标签:&lt;img id="MainContent_CPUBuilderForm1_Image6" src="Images/Icon_CPU.jpg" /&gt; 但是我发现进行更改没有效果;图像仍然保持静止。
【解决方案2】:

使用这个 HTML

<div>
        <asp:RadioButtonList ID="RadioButtonTipoUser" runat="server" RepeatDirection="Horizontal">

            <asp:ListItem Selected="true" Value="1">Dome</asp:ListItem>
            <asp:ListItem Value="amd">Emp</asp:ListItem>
            <asp:ListItem Value="intel">intel</asp:ListItem>
        </asp:RadioButtonList>
        <asp:Image ID="img" runat="server"  ImageUrl="~/Desert.jpg" />


    </div>

JQUERY

 $(document).ready(function () {


        $('#RadioButtonTipoUser_1').on('change', function () {

            if ($(this).is(':checked')) {
                $('#img').attr('src', 'Chrysanthemum.jpg');
            }
        });
        $('#RadioButtonTipoUser_2').on('change', function () {

            if ($(this).is(':checked')) {
                $('#img').attr('src', 'Desert.jpg');
            }
        });
    });


</script>

【讨论】:

  • Mayank:这是一个无效的解决方案,您不能对所有问题都使用相同的解决方案。我看到你用这个来回答另一个问题。我用自己的radCPUType 替换了RadioButtonTipoUser,并将$('#MainContent_img') 更改为$('#MainContent_Image6')。这些是我输入的名称。我什至调整了 HTML 以反映在标签中添加了Selected Value,但仍然没有任何变化。您在哪里测试了这个解决方案?
  • 另外,您的以下项目:&lt;asp:Image ID="img" runat="server" ImageUrl="~/Desert.jpg" /&gt;,没有正确引用我的ImageUrl。它需要像下面这样:ImageUrl="~/Images/SomeImage.jpg" /&gt;,这样它才能正确指向目录并获取图像。
  • 你有控件ID问题?如果是这样,那么只需将我的控件替换为您的控件即可,如果您有路径目录问题,则 jst 给出您目录的路径。我正在尝试以任何方式控制您的控件
  • @DesignerMind 不要使用 maincontent 只需使用您的控件 ID。
【解决方案3】:

欢迎来到 ASP.net Web 表单名称/ID 修改的精彩世界。

更新

确定您使用的是 asp.net 图像标签。请注意,您不必对图像使用 asp.net 控件,而是可以使用带有 ID 的普通旧 HTML 控件;这个ID不会被破坏。不过我现在还是坚持使用 asp.net 图像控件。

这要求您的脚本在页面上,而不是在 js 文件中。

.aspx

<asp:RadioBUttonList ID="yourID" runat="server" />
<asp:Image ID="Image6" runat="server" ImageUrl="~/Images/Icon_CPU.jpg" />

javascript

$(document).ready(function () {
    $("#<%= yourID.ClientID %> input").click(function () {
        var value = $(this).val();
        var image_name;
        var image_path = "/Images/"; 
        //If the images directory isn't at the website root you could use asp.nets
        //resolveURL method instead

        if (value == 'AMD') {
            image_name = "AMD_CPU_1.jpg";
        } else {
            if (value == 'Intel') {
                image_name = "Intel_CPU_2.jpg";
            } else {
                image_name = "Icon_CPU.jpg";
            }
        }

        //console.log(image_name);
         $("#<%= Image6.ClientID %>").attr('src', image_path + image_name);
    });
});

&lt;% %&gt; 是服务器代码块,在 aspx 页面中应谨慎使用。 &lt;%= %&gt; 是 ` 的简写。如果您查看页面的源代码,您将在 jQuery 选择器中看到单选按钮列表和图像控件的 ASP.net 客户端 ID。

如果出现意外结果,您还应该使用 FireBug for Firefox 或 Chrome 开发人员工具等工具来检查图像的路径,然后单击复选框。另请注意//console.log(image_name); 行。从该行中删除 cmets 会将 image_name 的值转储到控制台,这对于调试很有用。在此处查看更多信息:http://blogs.msdn.com/b/cdndevs/archive/2011/05/26/console-log-say-goodbye-to-javascript-alerts-for-debugging.aspx

下面的先前代码 - 不涉及更新图像

一个 hacky 的解决方案是用 div 或更好的 fieldset 包围您的单选按钮列表并给它一个 id:

<div id="listContainer">
    <asp:RadioButtonList ID="yourID" runat="server" />
<div>

现在将您的 javascript 更新为

$(document).ready(function () {
    $("#listContainer input").click(function () {
        var value = $(this).val();
        var image_name;
        if (value == 'AMD') {
            image_name = "AMD_CPU_1.jpg";
        } else {
            if (value == 'Intel') {
                image_name = "Intel_CPU_2.jpg";
            } else {
                image_name = "Icon_CPU.jpg";
            }
        }           
    });
});

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-14
    • 1970-01-01
    • 2020-05-17
    • 2016-07-19
    • 2016-06-17
    • 2015-11-29
    • 2015-03-02
    • 1970-01-01
    相关资源
    最近更新 更多