【问题标题】:drop down not retaining selected value after post back回发后下拉不保留所选值
【发布时间】:2011-01-30 01:48:21
【问题描述】:

我使用的是经典的 asp,我有一个用户选择然后按提交的下拉列表。在他们按下提交后,下拉列表将返回默认值,而不是他们选择的值。无论如何要保持回发之间的下拉状态而不是回到默认状态?如果需要,可以发布代码示例。 谢谢!

【问题讨论】:

    标签: asp-classic postback


    【解决方案1】:

    您必须根据用户发布的值“选择它”服务器端。

    <select id="cars">
      <option value="volvo" 
          <%
          if request.form("cars") = "volvo" then 
              response.write("selected") 
          end if %>
          >Volvo</option>
      <option value="Saab" 
          <%
          if request.form("cars") = "Saab" then 
              response.write("selected") 
          end if %>
          >Saab</option>
      <option value="Mercedes" 
          <%
          if request.form("cars") = "Mercedes" then 
              response.write("selected") 
          end if %>
          >Mercedes</option>
      <option value="Audi" <%
          if request.form("cars") = "Audi" then 
              response.write("selected") 
          end if %>
          >Audi</option>
    </select>
    

    当然,您可能希望自行开发自己的函数以避免所有这些样板。

    <% 
    sub option(value, data, select_id) 
        Response.Write("<option value=""" & value & """)
        if request.form(select_id) = value then 
            Response.Write("selected") 
        end if
        Response.Write(">" & data & "</option>")
    end sub
    %>
    ' (...)
    <select id="cars">
        <% option("volvo", "Volvo", "cars") %>
        <% option("Saab", "Saab", "cars") %>
        <% option("Mercedes", "Mercedes", "cars") %>
        <% option("Audi", "Audi", "cars") %>
    </select>
    

    如果你给函数传递一个空白的select_id,它就不会在意回发时尝试选择select的选中项。

    【讨论】:

    • 我使用了这个功能,它正是我所需要的完美运行!谢谢!!
    • @Bmw:记得根据您的需要调整它,因为可能有一些我没有考虑到的事情(例如,如果您使用 GET 而不是 POST)以保持它很短。很高兴它有帮助。
    【解决方案2】:

    您可以使用 javascript 和纯 HTML 来实现: HTML: 创建一个隐藏字段

    Javascript: 提交时将所选值保留在隐藏变量中

    页面加载 遍历下拉值并使用隐藏变量设置所选值

    http://www.daniweb.com/forums/thread105485.html 中提供了更多变体

    【讨论】:

    • 我可以知道为什么这被否决并且没有任何理由解释吗?
    • 我没有否决它,但可能是因为它通过需要 javascript 使事情变得不必要地复杂化,当 OP 问题只需要一个服务器端解决方案来考虑 select 的发布值时。
    • 不客气,我们都在这里帮助/学习。很高兴我能澄清一下。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多