【问题标题】:Allow only numbers and special character(-) to be typed in a textbox [duplicate]只允许在文本框中输入数字和特殊字符(-)[重复]
【发布时间】:2017-06-03 20:31:43
【问题描述】:

我需要只允许在文本框中输入数字和特殊字符减“-”,请帮助我,我已经有数字限制,但也想减号。

提前致谢

<script>
function isNumber(evt) {
    evt = (evt) ? evt : window.event;
    var charCode = (evt.which) ? evt.which : evt.keyCode;
    if (charCode > 31 && (charCode < 48 || charCode > 57)) {
        return false;
    }
    return true;
}
</script>


<input type="text" class="textfield" value="" id="extra7" name="extra7" onkeypress="return isNumber(event)" />

【问题讨论】:

  • 试试用正则表达式吧?
  • 你应该看看 HTML5 pattern 属性。
  • 能否请您使用正则表达式帮助我使用相同的代码
  • pattern IE 旧版本存在浏览器支持问题,Opera 不支持
  • 我没有得到你 Jonas w

标签: javascript


【解决方案1】:

添加!=45 是不够的。您还需要防止接受无效的键输入。返回 true/false 仍然允许用户键入这些键,然后您的代码似乎什么也不做。

if ((charCode < 48 || charCode > 57) && charCode != 45) {
   evt.preventDefault();
}

这样只有有效的按键输入才会出现在文本框中。

【讨论】:

    【解决方案2】:

    此正则表达式将检查数字和“-”。如果有其他字符,它们将被替换。

    $('.input').keyup(function () {
        if (!this.value.match(/^(\d|-)+$/)) {
            this.value = this.value.replace(/[^0-9-]/g, '');
        }
    });
    

    没有 jQuery 版本:

    <input type="text" class="textfield" value="" id="extra7" name="extra7" onkeyup="isNumber()" />
    
    function isNumber() {
        var inputField = document.getElementById('extra7');
        if (!inputField.value.match(/^(\d|-)+$/)) {
            inputField.value = inputField.value.replace(/[^0-9-]/g, '');
        }
    }
    

    【讨论】:

    • 如果没有标记jquery Q&A 应该是纯JS。
    • @niksofteng 对,已添加
    猜你喜欢
    • 2011-11-09
    • 2021-06-21
    • 2013-04-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-12
    • 1970-01-01
    相关资源
    最近更新 更多