建议在输入框写成 <input type="text" id="value" οninput="clearNoNum(this)">
function clearNoNum(obj){
obj.value = obj.value.replace(/[^\d.%]/g, ""); //清除"数字"和"."以外的字符
obj.value = obj.value.replace(/^\./g, ""); //验证第一个字符是数字而不是
obj.value = obj.value.replace(/\.{2,}/g, "."); //只保留第一个. 清除多余的
obj.value = obj.value.replace(/\%{2,}/g, "%"); //只保留第一个. 清除多余的
obj.value = obj.value.replace(/^(\-)*(\d+)\.(\d{2}).*$/, '$1$2.$3'); //只能输入6个小数
if(obj.value.indexOf("%") !== -1){
var val = obj.value;
const str = val.split("%")
console.log(str)
obj.value = str[0]+'%'
}
}