Axure教程:復(fù)選框選中時(shí),文字如何添加到文本框?

本文是作者在閱讀了相關(guān)文章后,對(duì)于復(fù)選框選中時(shí)可以將選項(xiàng)添加到文本框中的一些理解,來(lái)與大家分享,一起來(lái)看看~
昨天閱讀了小樓老師一篇文章,關(guān)于復(fù)選框選中時(shí)可以將選項(xiàng)添加到文本框中,覺(jué)得很實(shí)用,所以想用自己的理解分享出來(lái),直接上圖說(shuō)明。
沒(méi)有選中復(fù)選框時(shí),文本框提示“未選擇興趣。。?!?/strong>
選中復(fù)選框時(shí),文本框中顯示復(fù)選框中的內(nèi)容,并用“,”隔開(kāi)。
取消復(fù)選框時(shí),文本框中相應(yīng)的內(nèi)容取消。
是不是感覺(jué)還不錯(cuò),見(jiàn)過(guò)很多這方面的例子?
接下來(lái)我給大家詳細(xì)講解一下,如何實(shí)現(xiàn)。
一、分析
需要實(shí)現(xiàn)的效果如上所述:
- 沒(méi)有選中復(fù)選框時(shí),文本框提示“未選擇興趣。。?!保?/li>
- 選中復(fù)選框時(shí),文本框中顯示復(fù)選框中的內(nèi)容,并用“,”隔開(kāi);
- 取消復(fù)選框時(shí),文本框中相應(yīng)的內(nèi)容取消。
二、元件準(zhǔn)備
從元件庫(kù)中拖一個(gè)復(fù)選框,命名“checkbox”,一個(gè)多行文本框,命名“hobbyingput”接下來(lái)我們開(kāi)始實(shí)現(xiàn)逐步實(shí)現(xiàn)上述功能。
三、交互
1. 沒(méi)有選中復(fù)選框時(shí),文本框提示“未選擇興趣。。?!?/h3>
這個(gè)很容易實(shí)現(xiàn)我們只需給文本框添加提示文字“未選擇興趣。。。”,并影藏邊框。
2. “選中復(fù)選框時(shí),文本框中顯示復(fù)選框中的內(nèi)容,并用“,”隔開(kāi)”
我們給復(fù)選框“選中時(shí)”添加用例,設(shè)置文本給文本框“bobbyinput”,用“[[Target.text]],[[This.text]]”實(shí)現(xiàn),“Target.text”為文本框現(xiàn)有的文本,“This.text”為復(fù)選框中文本,也就是把復(fù)選框中的內(nèi)容放到文本框中的內(nèi)容后面,中間用“,”隔開(kāi)。
瀏覽器預(yù)覽時(shí):
這樣的話(huà)“未選擇興趣。。?!币擦粼诹宋谋究蛑?,這和我們的意愿違背,那么如何取消前面的“未選擇興趣。。?!??
我們?cè)谖谋究颉拔谋靖淖儠r(shí)”設(shè)置文本與“bobbyinput”用[[This.text.replace(‘未選擇興趣。。。’,”)]]實(shí)現(xiàn),我們把當(dāng)前文本框中的文本進(jìn)行替換,公式中的函數(shù)replace能夠?qū)ξ谋緝?nèi)容進(jìn)行替換,第一個(gè)參數(shù)是被替換的內(nèi)容,第二個(gè)參數(shù)是替換后的內(nèi)容。
瀏覽器預(yù)覽:
我們成功的把文本框中的“提示文字”取消了,但是又有了一個(gè)新的問(wèn)題,“,”出現(xiàn)在了“bobbyinput”文本框的前面,這明顯也不是我們想要的,這個(gè)問(wèn)題我們先放下,后面再集中解決,我們先解決“復(fù)選框取消時(shí),文本框中相應(yīng)的內(nèi)容取消”。
3. “取消復(fù)選框時(shí),文本框中相應(yīng)的內(nèi)容取消”
我們給復(fù)選框“選中取消時(shí)”添加用例,設(shè)置文本給“hobbyinput”用“[[Target.text.replace(This.text,”)]]“實(shí)現(xiàn),也就是當(dāng)復(fù)選框選中取消時(shí),替換目標(biāo)文本(多行文本框)中的內(nèi)容,replace()函數(shù)前面介紹過(guò)了。
這里我剛開(kāi)始給“this.text”也添了“ ” ”,但是瀏覽器預(yù)覽發(fā)現(xiàn)并不能達(dá)到效果,我理解應(yīng)該是“變量或者函數(shù)”直接使用,不用添加‘’,但是使用文本,或者符號(hào)需要添加‘’。
瀏覽器預(yù)覽:
咦!好像實(shí)現(xiàn)了哦。但是又有一個(gè)新問(wèn)題,復(fù)選框文本是不見(jiàn)了,但是“,”仍然存在,而且每選中一次,取消一次,就會(huì)多一個(gè)“,”。
好了,現(xiàn)在做到這里我們需要將復(fù)選框多復(fù)制幾個(gè),再到瀏覽器預(yù)覽,發(fā)現(xiàn)了幾個(gè)問(wèn)題,也就是我們現(xiàn)在所遇到的問(wèn)題。
(1)中間有兩個(gè)或者更多?“,”存在
(2)最前面有一個(gè)“,”存在
(3)最后面有一個(gè)“,”存在
接下來(lái)我們一 一分析,重點(diǎn)也來(lái)了。
我們先解決“中間有兩個(gè)或者更多?“,”存在”,因?yàn)槌霈F(xiàn)這個(gè)問(wèn)題的根本原因就是我們向文本框添加了內(nèi)容,導(dǎo)致它的文本發(fā)生了改變。所以,我們?cè)谇懊嫖谋究颉拔谋靖淖儠r(shí)”添加例“case2”添加條件。
如果文本框中包含“,,”替換為“,”。
瀏覽器預(yù)覽,問(wèn)題解決。
接下來(lái)解決“最前面有一個(gè)“,”存在”同樣在文本框“文本改變時(shí)”添加用例“case3”添加條件。獲取元件文字的第一位,我們通過(guò)公式“[[This.text.charAt(0)]]”獲取。
函數(shù)charAt能夠獲取指定位置的字符,字符串索引位置從0開(kāi)始,也就是說(shuō)第一位的位置就是0。
“[[This.text.substr(1)]]”函數(shù)substr能夠?qū)ξ谋具M(jìn)行截取,只輸入一個(gè)參數(shù)時(shí),表示從指定位置截取到末尾。字符串索引位置從0開(kāi)始,所以這里參數(shù)為1,就是從第二位截取到末尾。
瀏覽器預(yù)覽:
也解決了,終于到了最后一個(gè)問(wèn)題。
最后我們解決“最后面有一個(gè)“,”存在”,同樣的方法,在文本框“文本改變時(shí)”添加用例“case4”添加條件。獲取元件文字的最末位,我們通過(guò)公式“[[This.text.slice(-1)]]”獲取。
函數(shù)slice也是文本截取函數(shù),參數(shù)為負(fù)數(shù)時(shí)表示從后向前讀取位置,-1就是倒數(shù)第一位,只輸入一個(gè)參數(shù)時(shí),表示從指定位置截取到末尾。
這里我試著用replace()函數(shù)方法替換,因?yàn)槲谋究蜃詈蟛话埃彼詴?huì)替換掉整個(gè)文本框中的“,”為空白,就沒(méi)有“,”隔開(kāi)效果了。
所以還是要用小樓老師的方法:[[This.text.substr(0,This.text.length-1)]]。
函數(shù)substr,輸入兩個(gè)參數(shù)時(shí),第一個(gè)參數(shù)為截取的起始位置,第二個(gè)參數(shù)為截取的數(shù)量。
系統(tǒng)變量length能夠獲取文本的長(zhǎng)度,也就是字符數(shù)量,所以第二個(gè)參數(shù)“This.text.length-1”表示獲取文本當(dāng)前的字符數(shù)量然后進(jìn)行減1的計(jì)算。
通過(guò)這樣的操作,我們就能舍棄掉文本的最后一位。
就是從最面開(kāi)始截取,如果文本最后存在“,”那么截取位置就是從0到文本倒數(shù)第二位。
瀏覽器預(yù)覽:
到這里,我們?nèi)繉?shí)現(xiàn)了復(fù)選框選中時(shí)文本內(nèi)容添加到文本框,花了兩個(gè)小時(shí)寫(xiě)了這篇文章,雖然花了不少時(shí)間,但是寫(xiě)出了之后還是挺滿(mǎn)足的,這樣做主要是:
- 自己再次動(dòng)手,熟練了一遍;
- 分享給大家,我們一起學(xué)習(xí),一起進(jìn)步。
以后,我還會(huì)寫(xiě)關(guān)于Axure的小文章,歡迎大家交流學(xué)習(xí)
原型預(yù)覽:https://z7ox7s.axshare.com
源文件下載:https://pan.baidu.com/s/1qja_hBVRezpjPowL8MPuKw 密碼:ojru
本文參考文章:http://www.iaxure.com/5955.html
本文由 @就這樣吧! 原創(chuàng)發(fā)布于人人都是產(chǎn)品經(jīng)理。未經(jīng)許可,禁止轉(zhuǎn)載
題圖來(lái)自Unsplash,基于CC0協(xié)議
不在一個(gè)界面怎么才能做到復(fù)選框選中出現(xiàn)文字
nice
謝謝 分享 整的很棒呢
太6了,感謝分享 ??
點(diǎn)擊取消選中,沒(méi)有辦法取消 。沒(méi)有找到replace這個(gè)函數(shù)
我試了怎么不行啊,在線(xiàn)等解答。