Изменить изображение с помощью выбора в списке переключателей

0

У меня есть проект, который заставил меня немного поторопиться о том, как действовать так, как хотелось бы. На одной странице 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], у меня нет name="option" в источнике кода HTML... У меня есть следующее:

<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" вместо этого.

Я попытался вставить это в качестве замены для "опции", но до сих пор нет кубиков. Может кто-то помочь оценить, что я делаю неправильно здесь? Миллион спасибо! Приветствия.

  • 0
    Изучив ваши комментарии к другим ответам, я вижу, что вы используете тег asp image. Вы должны включить это в свой вопрос. Infoact немного больше вашей разметки было бы полезно, ваш список переключателей и тег изображения и т. Д.
  • 0
    Да, ретроспективный анализ - 20/20!
Показать ещё 2 комментария

3 ответа

0

Добро пожаловать в прекрасный мир ASP.net Web Forms Name/ID Mangling.

Обновить

Поразив, что вы используете тег изображения asp.net. Обратите внимание, что вам не нужно использовать элемент управления asp.net для изображения, в котором вы могли бы использовать простой старый HTML-код с идентификатором; этот идентификатор не будет искажен. Однако я буду придерживаться управления имиджем 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);
    });
});

<% %> - блок кода сервера и должен использоваться экономно на страницах aspx. <%= %> - короткая рука для <% Response.Write()%>. Если вы просмотрите исходный код страницы, вы увидите идентификатор клиента ASP.net элементов управления списком радио и кнопок управления в селекторах jQuery.

Вы также должны использовать инструмент, например FireBug для инструментов разработчика Firefox или Chrome, для проверки путей для изображения, как только вы нажимаете эти флажки, если вы получаете неожиданные результаты. Также обратите внимание на строку //console.log(image_name); , Удаление комментариев из этой строки приведет к сбросу значения image_name на консоль, что полезно для отладки. Подробнее см. Здесь: http://blogs.msdn.com/b/cdndevs/archive/2011/05/26/console-log-say-goodbye-to-javascript-alerts-for-debugging.aspx

Предыдущий код ниже - не адрес обновления изображения

Хакерное решение состоит в том, чтобы окружить вас списком переключателей с помощью div или еще лучше, и fieldset ему идентификатор:

<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";
            }
        }           
    });
});
0

используйте этот 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>
  • 0
    Mayank: Это нерабочее решение, и вы не можете использовать одно и то же решение для всех проблем. Я вижу, вы используете это для другого вопроса. Я заменил RadioButtonTipoUser своим собственным radCPUType и изменил $('#MainContent_img') на $('#MainContent_Image6') . Это название моих входов. Я даже настроил HTML, чтобы отразить добавление Selected Value в теге, и все же изменений нет. Где вы тестировали это решение?
  • 0
    Кроме того, ваш следующий элемент: <asp:Image ID="img" runat="server" ImageUrl="~/Desert.jpg" /> неправильно ссылается на мой ImageUrl . Оно должно быть примерно таким: ImageUrl="~/Images/SomeImage.jpg" /> чтобы правильно указывать на каталог и получать изображение.
Показать ещё 2 комментария
0

Проблема, с которой вы сталкиваетесь, заключается в том, что вы не присваиваете значение URI изображения тегу <img>. Поэтому вам нужно добавить что-то к нижней части своей функции, чтобы выполнить это задание. Поскольку у вас нет этого HTML в вашем вопросе, я напишу свой ответ с предположением, что у вас есть тэг в вашем коде как таковой: <img id="changingImage" src="" alt=""/>.

Поэтому просто добавьте это в свой Javascript до того, как ваша функция закроется:

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

Это должно заставить его изменить файл для вас, подумал, что вам может понадобиться изменить папку в вашей конфигурации.

  • 0
    У меня нет этого тега, в частности. У меня есть следующее: <td><asp:Image ID="Image6" runat="server" ImageUrl="~/Images/Icon_CPU.jpg" /></td>
  • 0
    Это изображение является тем исходным изображением, которое подобно заполнителю и изменится на изображение, связанное с выбором списка радиостанций. Таким образом, если моя версия $('#changingImage') быть $('#Image6') ? Также, что касается части asp:Image ID , я должен добавить свой собственный атрибут src="" , так как часть вашей надстройки J-Query содержит .attr('src', '../Images/' + image_name) компонент?
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню