谷歌瀏覽器的默認光標顏色是黑色的,咱們能夠看到GitHub上的光標倒是白色,那麼這個用CSS怎麼改變呢?git
光標的顏色是繼承自當前輸入框字體的顏色,因此用color屬性便可改變:github
input{
color:red
}
複製代碼
若是隻想改變光標的顏色而不改變字體的顏色那就使用caret-color屬性:web
input{
caret-color:red
}
複製代碼
input{
caret-color:transparent
}
複製代碼
input::-webkit-input-placeholder{
font-size:14px;
font-family:PingFangSC;
font-weight:400;
color:red;
}
複製代碼
弊端是彈出不是數字鍵盤(不符合需求)編程
<input type="number" pattern="[0-9]*">
複製代碼
注意點瀏覽器
綁定input的type屬性
<input :type="onFocus?'text':'number'" placeholder='請輸入金額' v-model='inputValue' @keyup='handle($event)'>
複製代碼
window.addEventListener('focus',()=>{
this.onFocus = true
})
window.addEventListener('blur',()=>{
this.onFocus = false
})
複製代碼
1.輸入框中只能輸入小數點後兩位,小數點前四位(代碼冗餘,有空會精簡,請各位看官輕噴~~~~) 解法四 (暴力處理)bash
handle(event){
let val= event.target.value.replace(/[^\d|.]/g,'');
let reg = /^\d{1,4}\.{0,1}\d{0,2}$/;
if(val.indexOf('0') == 0) {
if(val.substr(val.indexOf('0')+1,1) == 0){
val = '0'
}else if(val.substr(val.indexOf('0')+1,1) == '.'){
val = val
} else{
val = val.substr(val.indexOf('0')+1)
}
}
if(reg.test(val)){
if(val.indexOf('.') != -1){
if(val.substr(val.indexOf('.')).length>3 ){
return this.inputValue = val.substr(0,val.indexOf('.')+2)
}
return this.inputValue = val;
}else{
if(val.length>4){
return this.inputValue = val.substr(0,4);
}else{
return this.inputValue = val
}
}
}else{
if(val.indexOf('.') == 0){
return this.inputValue = '';
}else if(val.indexOf('.') == 5){
let arrs = val.split('');
arrs.splice(val.indexOf('.')-1,1);
let vals = arrs.join('')
return this.inputValue = vals
}else{
if(val == ''){
return this.inputValue = ' '
}
let Vals = val.substr(0,val.length-1);
return this.inputValue = Vals;
}
}
}
複製代碼
user-select屬性詳情編程語言
有多是在代碼中存在如下緣由函數
xxxxx{
-webkit-user-select:none
}
複製代碼
更改成字體
*:not(input,textarea) {
-webkit-user-select: none;
}
複製代碼
歷史背景: 計算機在進行四則運算時,對於無限循環的小數,會進舍入處理 例如: 0.1 + 0.2 = 0.30000000000000004ui
指定要保留的小數位數(0.1+0.2).toFixed(1) = 0.3; 這個方法toFixed是進行四捨五入的也不是很精準,對於計算金額這種嚴謹的問題,不推薦使用,並且不通瀏覽器對toFixed的計算結果也存在差別。
1.335.toFixed(2) = 1.33 //竟然沒有四捨五入
不一樣瀏覽器對 toFixed() 方法的處理結果是不一樣的。 好比:(2.445).toFixed(2) 在 IE 中的執行結果爲 "2.45",可是在 Chrome 中的執行結果爲 "2.44"。
把須要計算的數字升級(乘以10的n次冪)成計算機可以精確識別的整數,等計算完畢再降級(除以10的n次冪),這是大部分編程語言處理精度差別的通用方法。
function ToFixed(num,s){
let times = Math.pow(10,s)
let des = num * times + 0.5
des = parseInt(des, 10) / times
return des + ''
}
複製代碼
使用類庫
Math.js是一個用於JavaScript和Node.js的擴展數學庫。它具備靈活的表達式解析器,支持符號計算,帶有大量內置函數和常量,並提供了一個集成的解決方案,能夠處理不一樣的數據類型,如數字,大數,複數,分數,單位和矩陣。功能強大且易於使用。
GitHub:github.com/josdejong/m…
爲 JavaScript 提供十進制類型的任意精度數值。
GitHub:github.com/MikeMcl/dec…
提供十進制類型的任意精度數值的小型、快速JavaScript庫。
GitHub:github.com/MikeMcl/big…
上述內容就是我遇到的input問題以及解決方案,若有錯誤,歡迎指正!
若是你以爲這篇文章對你有所幫助,請別忘記點個贊和分享給你的小夥伴哦~😊😊😊