1. 程式人生 > 其它 >HTML之select下拉框:預設值設定

HTML之select下拉框:預設值設定

技術標籤:前端知識html

當我們做web專案時,總是會碰到的一種情況是下拉框的使用,提交資料很簡單,但是資料的回顯就會遇到一些問題:

我們在資料回顯時,期望下拉框預設顯示的是這條資料選擇的選項。

舉個例子:

有一篇博文,我上傳時設定的博文分類是:原創

但是分類有:原創、轉載等;

下拉框預設顯示的應該是:請選擇

資料回顯時期望顯示的是:原創;

其實這個問題很簡單,就是預設顯示誰的問題。

如果我們什麼都不設定,預設顯示的是c:for遍歷出來的第一個資料。

如果設定預設值的話,selected屬性就可以幫我們實現:

<select name="type" class="type">
   <c:forEach items="${type}" var="t">
       <option value="${t.typeId}" selected="selected">${t.typeName}</option>
   </c:forEach>
</select>

此時的設定很明顯會預設顯示:遍歷資料的最後一個。因為前邊的selected屬性都被最後一個覆蓋了

而我們的需求是:期望下拉框預設顯示的是這條博文原來選擇的原創選項。

略加嘗試,selected=“selected”這個表示式可不可以設定別的值?比如:

<select name="type" class="type">
    <c:forEach items="${type}" var="t">
       <option value="${t.typeId}" selected="${blogInfor.blogType}">${t.typeName}</option>
    </c:forEach>
</select>

此時是這樣子的:

c標籤仍然會繼續遍歷給出的t,但是生成的每一個option都附帶一個selected標籤,這個標籤的值是給定的博文型別,是通過el表示式獲取到的;

那麼不難想到,selected的值一定是博文原來選擇的型別,當然,前提條件是:selected屬性可以設定出了selected之外的值。

經過測試,此法完全可行:

  1. selected可以設定出了selected之外的值;
  2. 下拉框的預設值設定成了el表示式傳過來的值;

所以,我們的需求可以得到滿足了。

結果圖如下: