Javascript 我如何只允许用户输入-&引用;把1-9放进文本框?
如果使用jQuery,我如何仅允许用户使用Javascript 我如何只允许用户输入-&引用;把1-9放进文本框?,javascript,Javascript,如果使用jQuery,我如何仅允许用户使用onkeyup在文本框中输入“-”和1-9 var isAcceptableKey = /[0-9,-]*/; $(yourinput).bind('keyup', function(e) { if ( e.keyCode.match(isAcceptableKey) { // ok } }); 正如其中一条评论指出的那样。只需使用正则表达式。不过,我的正则表达式示例可能并不完全正确。使用jQuery 更新:我看到了使用jQuery的
onkeyup
在文本框中输入“-”和1-9
var isAcceptableKey = /[0-9,-]*/;
$(yourinput).bind('keyup', function(e) {
if ( e.keyCode.match(isAcceptableKey) {
// ok
}
});
正如其中一条评论指出的那样。只需使用正则表达式。不过,我的正则表达式示例可能并不完全正确。使用jQuery
更新:我看到了使用jQuery的其他答案,并假设您有jQuery。通读下面的注释,然后查看下面的非jQuery版本
另外,我的示例使用了\d
,它也允许0
(您的问题明确指出1-9
)。如果确实要限制1-9
,请使用1-9
交换\d
例1
您可以在keyup
上删除无效字符
$('textarea').keyup(function() {
$(this).val(function(index, oldVal) {
return oldVal.replace(/[^\d-]/g, '');
});
});
您可能还希望绑定其他事件,例如粘贴
例2
如果角色显示的瞬间让你感到恼火,你可以用这个
$('textarea').keypress(function(event) {
var keyCode = event.keyCode;
if ( ! (keyCode >= 48 && keyCode <= 57) && keyCode != 45) {
event.preventDefault();
}
});
此外,当浏览器最终达到规范要求时,您可以使用with[\d-]+
。这将只允许0-9
和-
JavaScript
例1
var textareas=document.getElementsByTagName('textarea');
对于(变量i=0,textareasLength=textareas.length;i
例2
var textareas=document.getElementsByTagName('textarea');
对于(变量i=0,textareasLength=textareas.length;i 如果(!(keyCode>=48&&keyCode您是指一个正整数还是负整数
尝试以下方法:
if(isNaN(parseInt(textbox.value)))
{
//this is a validation error.
}
var validationRegex = RegExp(/[-0-9]+/, "g");
if(!validationRegex.match(textbox.value)
{
//this is a validation error.
}
否则类似于:
if(isNaN(parseInt(textbox.value)))
{
//this is a validation error.
}
var validationRegex = RegExp(/[-0-9]+/, "g");
if(!validationRegex.match(textbox.value)
{
//this is a validation error.
}
Disclamer:我还没有测试过这些
将它们放入函数中
function doKeyUpValidation(textbox)
{
}
以及以下任一标记:
<input type="text" onkeyup="doKeyUpValidation(this)" />
从张贴的答案可以看出,有很多方法可以做到这一点
我也有其他的方法来做这件事。见下面的代码
JS
function isValidChar(char){
var txt = char;
var found = false;
var validChars = "-123456789"; //List of valid characters
for(j=0;j<txt.length;j++){ //Will look through the value of text
var c = txt.charAt(j);
found = false;
for(x=0;x<validChars.length;x++){
if(c==validChars.charAt(x)){
found=true;
break;
}
}
if(!found){
//If invalid character is found remove it and return the valid character(s).
document.getElementById('txtFld').value = char.substring(0, char.length -1);
break;
}
}
}
函数isValidChar(char){
var-txt=char;
var=false;
var validChars=“-123456789”;//有效字符列表
对于(j=0;j,这里有一个解决方案,它阻止所有非数字输入进入文本字段,不包括顶部数字输入行中的“-”字符和侧面的键盘
html
<input type="text" id="numbersOnly" />
var input = document.getElementById('numbersOnly');
input.onkeydown = function(e) {
var k = e.which;
if (!((k > 47 && k < 58) || (k > 95 && k < 106)) && !(k == 189 || k == 109 || k == 8 || k == 46)) {
e.preventDefault();
return false;
}
};
javascript
<input type="text" id="numbersOnly" />
var input = document.getElementById('numbersOnly');
input.onkeydown = function(e) {
var k = e.which;
if (!((k > 47 && k < 58) || (k > 95 && k < 106)) && !(k == 189 || k == 109 || k == 8 || k == 46)) {
e.preventDefault();
return false;
}
};
var input=document.getElementById('numbersOnly');
input.onkeydown=功能(e){
var k=e,其中;
如果(!((k>47&&k<58)| |(k>95&&k<106))&!(k==189 | | k==109 | | k==8 | | k==46)){
e、 预防默认值();
返回false;
}
};
你确定你不希望你的e.keyCode==
是基于正则表达式的吗?是的,事实上这很好。那会更好。谢谢:)他们keyCode
属性返回一个值。@alex nvm。我现在明白你的意思了。正则表达式需要匹配键代码,而不是它转换成的键。@Mark你可以执行String.fromCharCode(e.keyCode).match(/[\d-]/)
。与其他键控解决方案不同,它的优点是允许您仍然使用导航键。@harpo我的第二个示例也允许键盘导航:),只是为了让您知道用户讨厌这种界面。它对用户更友好(尽管对您来说需要更多工作)要允许他们在适当的时间输入所需的内容并进行验证,请在页面中显示有关不需要的字符的消息。如果他们碰巧输入了不需要的字符,请让用户自己删除。例如,用户快速键入可能会击错键,因此按backspace删除该字符,但脚本已删除dy删除了它,所以他们删除了他们想要的角色。真烦人。:-)
<input type="text" id="numbersOnly" />
var input = document.getElementById('numbersOnly');
input.onkeydown = function(e) {
var k = e.which;
if (!((k > 47 && k < 58) || (k > 95 && k < 106)) && !(k == 189 || k == 109 || k == 8 || k == 46)) {
e.preventDefault();
return false;
}
};