在HTML中,有时输入框中只需要数值,通过<input type="number">可以禁止输入框中数字、小数点、负号以外的字符,这相当于数字、小数点、负号以外的字符没有被输入,有时会有其它影响,例如:在嵌入式Web开发中,<--#t-->标识符要在Web页面中显示电压值必须在系统初始化前被输入,否则不能显示电压值。
这个初始状态有<--#t-->标识符,当检测到电压值时,此输入框就是字符+数字的格式,按照如下代码,当电压值小于等于1650时也不能弹出提示框。
<td><input type="text" value="<!--#t-->"oninput="if(value<=1650){alert('asd')};" /> <td>
此时就需要先输入再清除
代码如下:
<td><input type="text" value="<!--#t-->" onkeyup="num(this)" oninput="num(this);if(value<=1650){alert('asd')};" /> <small><span style="font-family: Verdana;">mv</span></small></td>
<script>
function num(obj){
obj.value = obj.value.replace("--#t--","a"); // "--#t--"替换为a
obj.value = obj.value.replace(/[^\d.-]/g,""); //清除"数字"和".-"以外的字符
}
</script>
"num(this)"是此输入框执行function num(obj){}中的功能
obj.value = obj.value.replace(/[^\d.-]/g,""); //清除"数字"和".-"以外的字符,但是最终得到的值总是负数。在上一行加上obj.value = obj.value.replace("--#t--","a");,把--#t--替换为小写字母a,小写字母也是要清除的字符,#t中多余的负号也被清除。
οnkeyup="num(this)"是手动输入时执行function num(obj){}中的功能,此时,"数字"和".-"以外的字符也可以通过复制粘贴等自动输入方式得到,οninput="num(this)"是手动和自动输入时执行function num(obj){}中的功能,即无论是手动输入还是自动输入都不能得到"数字"和".-"以外的字符。
按照上述代码,当电压值小于等于1650时就会弹出提示框。