您當前的位置:首頁 > 攝影

前端對於處理空格問題場景總結

作者:由 自由的囚徒 發表于 攝影時間:2020-10-06

禁止input輸入所有空格

方法1

<

input

type

=

“text”

onKeypress

=

“javascript:if(event。keyCode == 32)event。returnValue = false;”

/>

方法2

<

input

type

=

“text”

onkeyup

=

“this。value=this。value。replace(/^\s+|\s+$/g,‘’)”

>

去字串的首尾空格

String

prototype

trim

()

<

input

type

=

“test”

v

-

model

trim

=

“keyword”

>

注意:是提交欄位的時候去除首尾空格,但是空格還是能夠輸入的

禁止輸入首尾空格,能輸入中間空格

方法1

<

input

v-model

=

“keyword”

placeholder

=

“原生input框”

/>

//watch監聽

watch: {

keyword(newval) {

this。keyword = newval。trim()

}

}

注意:這種方式只適合原生input框,假如說v-model是用在第三方的封裝元件中的,那麼監聽keyword關鍵字禁止輸入兩邊空格是沒效果的

原因:未知

解決辦法:監聽輸入空格的鍵盤事件

<

myInput

v-model

=

“entry”

@

keyup

space

native

=

“submit”

>

myInput

>

submit (event) {

this。entry=this。entry。trim()

}

注意:監聽元件根元素要用native修飾符

當然,如果你想用ref直接來修改value的值,這樣也不行,如果你瞭解v-model的原理的話,就知道,其實v-model就是傳入一個value的prop屬性,當你直接修改這個屬性值時,vue會發發出警告

前端對於處理空格問題場景總結

Avoid mutating a prop directly since the value will be overwritten whenever the parent component re-renders。 Instead, use a data or computed property based on the prop‘s value。 Prop being mutated: “value 大意就是: 避免直接更改prop,因為每當父元件重新渲染時,該值都會被覆蓋。而是使用基於屬性值的資料或計算屬性來修改此值

那如果是自己封裝的v-model元件可以在元件中用一個計算屬性來去除空格,然後再傳值給input的value - 自己封裝的v-model元件

<

template

>

<

div

class

=

”item“

>

<

input

:value

=

”setValue“

@

input

=

”input($event)“

placeholder

=

”自定義元件的v-model“

/>

div

>

template

>

<

script

>

export

default

{

props

{

value

String

},

data

()

{

return

{}

},

computed

{

//為了去除空格

setValue

()

{

return

this

value

trim

()

}

},

methods

{

input

event

{

this

$emit

’input‘

event

target

value

}

}

}

script

>

引用元件

<

myInput

v-model

=

”keyword“

>

myInput

>

附:文件地址

https://

cn。vuejs。org/v2/guide/c

omponents。html#ad

標簽: value  Model  input  空格  元件