问题:
input输入框设置属性type="number"之后仍然能输入大小写的e, +, -
原因:
e在数学上代表2.71828,所以它也还是一个数字
在网上找了很多方案发现用起来都不是很方便, 最后用正则来做是比较简单的
解决方案:
直接在input标签内加一个属性 οninput="value=value.replace(/[^\d]/g,'')" 即可完美解决
如果有其他输入需求, 直接修改正则表达式即可, 例:
允许输入小数: οninput="value=value.replace(/[^\d.]/g,'')"
<el-input v-model="scope.row.variables.leaderbuweiscores.score" @keyup.native="changeInput(scope.row)" onmousewheel="return false;" oninput="value=value.replace(/[^\d.]/g,'')" type="number" :disabled="scope.row.leaderBumenRoleId != user.roleId || notEnd">
题外:
设置type="number"之后鼠标滑轮会对输入框起作用, 这样会导致键盘抬起事件不起作用, 所以用到 onmousewheel="return false;" 来屏蔽鼠标鼠标滚动事件(鼠标滚动事件还存在, 只是屏蔽了输入框内数字变化)
例子:
<div class="form-group">
<label class="control-label col-xs-12 col-sm-2">{:__('Reward')}:</label>
<div class="col-xs-12 col-sm-8">
<input id="c-reward" data-rule="required" class="form-control input-large" step="0.01" name="row[reward]" type="number"
value="0.00" min="0.00" oninput="value=value.replace(/[^\d.]/g,'')">
</div>
</div>