溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

select2選擇的value傳不到后臺

發(fā)布時間:2020-07-31 10:08:47 來源:網(wǎng)絡(luò) 閱讀:1938 作者:Beyond_奈何 欄目:web開發(fā)

近期項(xiàng)目中使用select2作為輸入產(chǎn)品控件
假設(shè)有這樣的標(biāo)簽是用select2初始化的:

<select id="selectId"></select>
var option = $("#selectId").select2("data")[0];
//選項(xiàng)的值:
var value = option.id;
//選項(xiàng)顯示文本:
var text = option.text;

select控件的option都有一個value屬性和一個text顯示文本(如上所示),測試發(fā)現(xiàn)控件使用過程中,顯示文本這個值有的時候無法傳到后臺,并且是有點(diǎn)時候出現(xiàn),大部分是正常的。

困擾了一段時間,找到了原因,select2是配置了可輸入的,且請求后臺數(shù)據(jù):
select2選擇的value傳不到后臺

select2的dropdown打開之后,輸入一個內(nèi)容:abc

這里有一個奇怪的現(xiàn)象,同樣的操作會出現(xiàn)不同的結(jié)果,下面的第一種
select2選擇的value傳不到后臺
第二種
select2選擇的value傳不到后臺
至于哪里能控制我還沒找到原因,下面回到正題

abc這個值經(jīng)過篩選沒有找到,返回一個新創(chuàng)建option,也就是上面第二種情況,它會自動錄入到select標(biāo)簽中,在某些情況是會自動關(guān)閉的(比如點(diǎn)擊select之后,dropdown打開,鼠標(biāo)再點(diǎn)擊屏幕其它區(qū)域,就是dropdown以外的區(qū)域,它會關(guān)閉),這時點(diǎn)擊其它地方它自動關(guān)閉,這樣外表看似已經(jīng)選擇了,但是隱藏傳值的標(biāo)簽并沒有賦值,提交后臺自然就是空的

之前代碼中只加了onchange事件,在鼠標(biāo)點(diǎn)擊和回車之后會觸發(fā)這個change方法,但是它自己關(guān)閉的的情況不會觸發(fā),就不會給隱藏的name賦值,也就傳不到后臺

解決過程:
添加onchange事件之后,也要添加select2:close事件,在close事件中給隱藏標(biāo)簽賦值,理論上在dropdown關(guān)閉的時候會觸發(fā)

這樣修改之后引起的了別的問題(下面的問題項(xiàng)目代碼具體處理情況有關(guān),并不是上面的select2:close事件不好用),我當(dāng)時修改的上面的close事件和change觸發(fā)同一個方法,這樣導(dǎo)致每次選擇都會調(diào)用兩次賦值方法,并且還發(fā)現(xiàn)了另外的問題:

select2:unselecting事件在點(diǎn)擊清除小叉號執(zhí)行信息清空,清空之后會出現(xiàn)其他選項(xiàng)
select2選擇的value傳不到后臺

比如點(diǎn)擊select之后出現(xiàn)下面的選項(xiàng):
select2選擇的value傳不到后臺
我選擇:1243
select2選擇的value傳不到后臺
再點(diǎn)擊選擇234,再點(diǎn)擊選擇214
select2選擇的value傳不到后臺
然后我點(diǎn)擊右邊的小叉號清除,然后錄入一個不存在的選項(xiàng):abcdefg
select2選擇的value傳不到后臺
這個時候select標(biāo)簽下會有四個option:
select2選擇的value傳不到后臺
這個時候點(diǎn)擊右側(cè)小叉號,理想結(jié)果是這樣的:
select2選擇的value傳不到后臺
實(shí)際上他是這樣的:
select2選擇的value傳不到后臺
它自己默認(rèn)把第一個option當(dāng)做選項(xiàng),實(shí)踐證明:

只有可手寫輸入的選項(xiàng)刪除時,如果之前選擇過其他的選項(xiàng)(就是select標(biāo)簽下有option)情況下才會這樣,除此之外不會。

解決辦法:在點(diǎn)擊小叉號觸發(fā)的方法里面,把select標(biāo)簽下所有的option都刪除。

上面是我目前的處理方式,如果以后發(fā)現(xiàn)更好的再來更新。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI