iT邦幫忙

0

(已解決)php 下拉選單內容排序,且排序後原對應的 option value 不變

想將下拉選單的內容(含中英文)排序,且排序後原對應的 option value 不變

例如原先的下拉內容是這樣

<option value='1'>小喬</option>
<option value='2'>BBB</option>
<option value='3'>AAA</option>
<option value='4'>小涵</option>
<option value='5'>CCC</option>

經排序後,可能是變成這樣

<option value='3'>AAA</option>
<option value='2'>BBB</option>
<option value='5'>CCC</option>
<option value='1'>小喬</option>
<option value='4'>小涵</option>

謝謝

混水摸魚 iT邦研究生 2 級 ‧ 2018-01-08 10:51:41 檢舉
你標題有打php 推論 這option的值是從資料庫撈出來的,直接用sql語法排序就可以
小斑 iT邦新手 3 級 ‧ 2018-01-08 11:22:32 檢舉
不好意思,內容沒有說明清楚
option的值是從介接API得來的
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

2 個回答

1
石頭
iT邦高手 1 級 ‧ 2018-01-08 10:23:29
最佳解答

看看合不合用

最主要比較 optiontext 看看哪個比較大 在排序

連結

看更多先前的回應...收起先前的回應...
小斑 iT邦新手 3 級 ‧ 2018-01-08 11:20:39 檢舉

謝謝,排序沒問題了。
但我選的text不會停留在我選的,例如我選小喬,選單不會顯示我選小喬,仍停留在AAA,請問是什麼原因呢?謝謝

另外想請問這兩行意思,謝謝

$("#ddlList").get(0).selectedIndex = 0;
e.preventDefault();
石頭 iT邦高手 1 級 ‧ 2018-01-08 11:23:40 檢舉

$("#ddlList").get(0).selectedIndex = 0;
選擇你當前的選項 我目前是給0 所以初始話都是第一個

石頭 iT邦高手 1 級 ‧ 2018-01-08 11:41:11 檢舉
 e.preventDefault();

阻止Click事件發生行為
http://www.w3school.com.cn/jquery/event_preventdefault.asp

小斑 iT邦新手 3 級 ‧ 2018-01-08 13:59:21 檢舉

謝謝
請問如何將當前的選項帶入?

石頭 iT邦高手 1 級 ‧ 2018-01-08 14:24:19 檢舉

如何帶入當前項目
連結

小斑 iT邦新手 3 級 ‧ 2018-01-08 15:29:03 檢舉

好像還是不行,目前是以下寫法

var id = document.getElementById("ddlList").value;
$("#ddlList").val(id);
e.preventDefault();
小斑 iT邦新手 3 級 ‧ 2018-01-08 16:02:18 檢舉

我上面的寫法好像不OK
因為我的下拉選單還沒選擇內容
所以也無法取到value

小斑 iT邦新手 3 級 ‧ 2018-01-08 16:12:35 檢舉

請問如何將text停留在我選的呢?謝謝

石頭 iT邦高手 1 級 ‧ 2018-01-08 16:22:06 檢舉
 $("#ddlList").val(你要選擇Option的Value)

一般來說預設值一開始就決定好了
還是你的預設值要一直變?

石頭 iT邦高手 1 級 ‧ 2018-01-08 16:25:01 檢舉
小斑 iT邦新手 3 級 ‧ 2018-01-08 16:27:31 檢舉

我的預設值會一直變

石頭 iT邦高手 1 級 ‧ 2018-01-08 16:28:52 檢舉

把 預設值的Option Value 存起來 在設定給

 $("#ddlList").val(你要選擇Option的Value)
小斑 iT邦新手 3 級 ‧ 2018-01-08 16:46:47 檢舉

不好意思,應該不是我的預設值會一直變。我的預設值是固定第一個。

我遇到的問題是,選擇下拉選單某一個內容,會一直顯示預設值,無法顯示我選的內容。

石頭 iT邦高手 1 級 ‧ 2018-01-08 17:08:58 檢舉
小斑 iT邦新手 3 級 ‧ 2018-01-08 17:12:02 檢舉

可以了,謝謝~
您真的太厲害了/images/emoticon/emoticon51.gif

0
wiseguy
iT邦超人 1 級 ‧ 2018-01-08 15:00:24

假設你的資料陣列如 $a,用 usort 排一下就行了。

<?php
$a = [[1, '小喬'], [2, 'BBB'], [3, 'AAA'], [4, '小涵'], [5, 'CCC']];
usort($a, function($x, $y){return $x[1]>$y[1];});
foreach($a as $b){
	printf("<option value='%s'>%s</option>\n", $b[0], $b[1]);
}
小斑 iT邦新手 3 級 ‧ 2018-01-08 16:13:17 檢舉

謝謝,我再試試看

我要發表回答

立即登入回答