2017-06-03 179 views
-3

我需要只允许在文本框中输入减号“ - ”的数字和特殊字符,请帮助我,我已经有一个数字限制,但希望减号。只允许在文本框中输入数字和特殊字符( - )

在此先感谢

<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)" /> 
+0

尝试使用正则表达式也许? – xDreamCoding

+0

你应该看看HTML5 ['pattern'](https://developer.mozilla.org/en/docs/Web/HTML/Element/input#attr-pattern)属性。 – Siguza

+0

可以üPLZ帮助我用相同的代码使用正则表达式 – jai

回答

0

添加!=45是不够的。您还需要防止接受无效的密钥输入。返回true/false将仍然允许用户键入这些键,然后你的代码看起来什么都不做。

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

这样,只有有效的键输入将出现在文本框中。

+0

thanks niksofteng – jai

0

此正则表达式将检查数字和 ' - '。如果有其他角色,他们将被替换。

$('.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, ''); 
    } 
} 
+0

如果没有'jquery'标记Q&A应该是纯JS。 – niksofteng

+0

@niksofteng right,added it – petul

相关问题