vue v-mode.trim 只能去掉首尾空格,有什么办法 把中间空格也处理了,另外把全角,替换为半角逗号
去空格
str.split(' ').join('')
换逗号
str.split(',').join(',')
.trim 只能是过滤首尾如果是中间的话 你可以去input事件中去过滤掉就行了
用正则吧,都可以去掉
str.replace(/\s*/g,"")
推荐你还是放在 axios 去处理这些问题 最好不要去限制它的输出,因为不能输空格是很怪异的一种行为
只能说提交数据的时候 默认的去移除掉这些数据
在 axios 里的话,在请求拦截器里面 可以全局的处理一下这个问题 这样你也不需要每个数据都处理一次
当然这个只是去除掉首尾的空格,你可以使用正则在最后return的数据进行一次替换 替换掉空格 特殊字符等等
/**
* @description: 2021-05-14 请求参数首尾去空格
* @param {*} data
* @return {*}
*/
function isTrim(data) {
// 首先需要判断当前的config中是否存在data值
if (data && data instanceof Object) {
for (const key in data) {
if (Object.hasOwnProperty.call(data, key)) {
// 此处我们不要使用 let element = data[key] 注意 如果采用这种方式的话对应trim改变的值和data[key]将不再会是一个同一个内存地址
// 在需要判断一下当前数据是否是数组
if (Array.isArray(data[key])) {
// 就将数组放进去
data[key] = isTrim(data[key])
} else if (data[key] && data[key] instanceof Object) {
// 如果对象里面套对象的话
data[key] = isTrim(data[key])
} else if (data[key] && Object.prototype.toString.call(data[key]) == '[object String]') {
// 如果对象里面的数据是String的话那么就直接trim只对String进行操作
data[key] = data[key].trim()
}
}
}
return data
} else if (data && Object.prototype.toString.call(data) == '[object String]') {
// 如果是字符串说明是JSON.parse需要转换
let dataObj = JSON.parse(data)
// 转成对象之后在抛出去
dataObj = isTrim(dataObj)
return JSON.stringify(dataObj)
} else if (data && data instanceof Array) {
// 如果是数组 那就forin一下 判断里面的数据类型
for (const key in data) {
if (Object.hasOwnProperty.call(data, key)) {
if ((data && data instanceof Object) || (data && data instanceof Array)) {
data[key] = isTrim(data[key])
}
}
}
return data
}
}