Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/393.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typo3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 我如何只允许用户输入-&引用;把1-9放进文本框?_Javascript - Fatal编程技术网

Javascript 我如何只允许用户输入-&引用;把1-9放进文本框?

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的

如果使用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;
    }
};​