html如何控制input只能输入数字

本文介绍了如何在网页中实现输入数字验证功能,并应用于时间设置的场景,包括品牌上午和下午时间的小时和分钟输入限制。
<input id="Text1" type="text" onkeypress="return IsNum(event)" />
    <script language="javascript" type="text/javascript">
        function IsNum(e) {
            var k = window.event ? e.keyCode : e.which;
            if (((k >= 48) && (k <= 57)) || k == 8 || k == 0) {
            } else {
                if (window.event) {
                    window.event.returnValue = false;
                }
                else {
                    e.preventDefault(); //for firefox 
                }
            }
        } 
    </script>




<tr>
    <td class="label">{$lang.brand_am}</td>
    <td><span>小时:</span><input type="text" name="brand_am_h" id="brand_am_h" maxlength="5" size="5" onkeypress="return IsNum(event,'brand_am_h',2,3,4)" value="{$brand.brand_am_h}"/><span>分钟:</span><input type="text" name="brand_am_i" id="brand_am_i" onkeypress="return IsNum(event,'brand_am_i',5,6,9)" maxlength="5" size="5" value="{$brand.brand_am_i}"/></td>
  </tr>
  <tr>
    <td class="label">{$lang.brand_pm}</td>
    <td><span>小时:</span><input type="text" name="brand_pm_h" id="brand_pm_h" maxlength="5" size="5" onkeypress="return IsNum(event,'brand_pm_h',2,3,4)" value="{$brand.brand_pm_h}"/><span>分钟:</span><input type="text" name="brand_pm_i" id="brand_pm_i"  onkeypress="return IsNum(event,'brand_pm_i',5,6,9)" maxlength="5" size="5" value="{$brand.brand_pm_i}"/></td>
  </tr>
<script language="javascript" type="text/javascript">
        function IsNum(e,id,num1,num2=9,num3=9) {
            var k = window.event ? e.keyCode : e.which;
            var temp_num3 =48+num3;
            if (((k >= 48) && (k <= 57)) || k == 8 || k == 0) {
                var temp_var = document.getElementById(id).value;
                if((temp_var >= num2) && (k != 8)){
                     if (window.event) {
                            window.event.returnValue = false;
                        }
                        else {
                            e.preventDefault(); //for firefox 
                        }
                }else if((temp_var == num1) && (k != 8) && (k > temp_num3)){
                     if (window.event) {
                            window.event.returnValue = false;
                        }
                        else {
                            e.preventDefault(); //for firefox 
                        }
                }
            } else {
                if (window.event) {
                    window.event.returnValue = false;
                }
                else {
                    e.preventDefault(); //for firefox 
                }
            }
            
        } 
    </script>
实现 el-input 只能输入数字有以下几种方法: ### 方法一:使用 @input 事件结合正则替换 ```vue <template> <el-input v-model="form.number" @input="handleInput" placeholder="请输入数字"></el-input> </template> <script> export default { data() { return { form: { number: '' } }; }, methods: { handleInput() { var numberStr = this.form.number.toString(); this.form.number = Number(numberStr.replace(/\D/g, '')); if (this.form.number === 0) { this.form.number = ''; } } } }; </script> ``` 此方法通过监听 `@input` 事件,在用户输入时将非数字字符替换为空,最终将结果转换为数字类型。若结果为 0,则将输入框置为空。该方法可参考引用[2]。 ### 方法二:使用 HTML5 的 input 原生属性和 oninput 事件 ```html <el-input v-model="number" :maxlength="20" clearable placeholder="请输入数字"> <template #suffix> <input type="text" v-model="number" oninput="value=value.replace(/\D/g, '')"> </template> </el-input> ``` 这种方式利用 HTML5 的 `oninput` 事件,在输入时直接将非数字字符替换为空。可参考引用[3]中的思路。 ### 方法三:结合 @input 和 @change 事件处理 ```vue <template> <el-input v-model="queryParams.number" :maxlength="20" clearable @input="getNumIpt" @change="getChangeIpt" placeholder="请输入数字"></el-input> </template> <script> export default { data() { return { queryParams: { number: '' } }; }, methods: { getNumIpt(val) { this.queryParams.number = val.replace(/[^\d]/g, ""); }, getChangeIpt(val) { this.queryParams.number = val.replace(/[^\d]/g, ""); } } }; </script> ``` 该方法在 `@input` 和 `@change` 事件中都对输入内容进行处理,将非数字字符替换为空。参考了引用[1]和引用[4]的处理方式。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值