【问题标题】:Image in/visible after dropdown choice下拉选择后图像在/可见
【发布时间】:2019-02-21 16:00:07
【问题描述】:

当我在下拉菜单中选择一种语言时,匹配的语言图像应该出现在它旁边的 div 中,从而使不相关的图像不可见。我无法让它工作,我一直在尝试使用 display: none;block;.hide() .show()

谁能看到我在这里做错了什么?

<form id="form1" runat="server">
  <div id="navLanguage">
    <asp:DropDownList ID="ddlLanguages" runat="server" AutoPostBack="True" >
    <asp:ListItem Text="English" Value="en-us" />
    <asp:ListItem Text="Nederlands" Value="nl" />
    <asp:ListItem Text="Português" Value="pt-br" />
    </asp:DropDownList>
  </div>
</form>

<div ID="Flags" runat="server">
    <asp:Image runat="server" ID="FlagUK" imageUrl="Images/Language Icons/FlagUK.png" Value="en-us" />
    <asp:Image runat="server" ID="FlagNL" imageUrl="Images/Language Icons/FlagNL.png" Value="nl" />
    <asp:Image runat="server" ID="FlagBR" imageUrl="Images/Language Icons/FlagBR.png" Value="pt-br" />
</div>

<script src="https://code.jquery.com/jquery-1.3.2.min.js"></script> 
<script type="text/javascript">
  $(document).ready(function () {
    $('#ddlLanguages').on ('change', function () {
      var selected = $(this).val();
      if (selected === "en-us") {
        $('#FlagUK').show();
        $('#FlagNL').hide();
        $('#FlagBR').hide();
      }
      if (selected === "nl") {
        $('#FlagUK').hide();
        $('#FlagNL').show();
        $('#FlagBR').hide();
      }
      if (selected === "pt-br") {
        $('#FlagUK').hide();
        $('#FlagNL').hide();
        $('#FlagBR').show();
      }
    });
 });
</script>

【问题讨论】:

  • 看起来您正在使用 ASP.Net 网络表单。因此,所有ID 属性或您的runat="server" 控件都将在运行时动态更改。如果您在浏览器中检查 DOM,您会发现它们与您的代码所期望的完全不同。要解决此问题,请使用控件的 ClientID 属性来访问它,或使用类。
  • 另请注意,jQuery 1.3.2 确实很古老。您真的需要将其升级到至少 1.12.1,最好是 3.3.1
  • 你有autopostback=true,所以如果你选择的时候页面正在发布,那么你的JS永远不会执行。
  • 好的...对于这段代码有什么实用的解决方案?
  • @Rory McCrossan:我正在使用带有 MVS 的 ASP.NET。我写的这段代码放在母版页上,难道母版页不需要使用 ClientID 属性吗?此外,当我检查 DOM 时,ID 属性与代码匹配

标签: javascript jquery html asp.net


【解决方案1】:

尝试将“更改”事件更改为“点击”事件 这样你就可以直接选择 dom 并从中获取值。

【讨论】:

  • 点击事件似乎有效,但仅在点击时有效。如果我想在点击后也保留该值,我需要使用什么?
  • 您可以将值保存在缓存中,cookies
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-02-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多