30

似たような指示をいくつか見つけましたが、どれも役に立ちません。それらはすべて、特殊文字または数字のいずれかです。

ユーザータイプを1、2、3、4、5、N、O、A、B、Cのみにする必要があります。他のすべての文字は制限する必要があります。

入力用に制限された/許可された文字を自分で選択する方法はありますか?

  • javascriptにあまり精通していません。
4

7 に答える 7

29

JQueryを使用して、

$("input").keypress( function(e) {
    var chr = String.fromCharCode(e.which);
    if ("12345NOABC".indexOf(chr) < 0)
        return false;
});

JQueryなし

document.getElementById("foo").onkeypress = function(e) {
    var chr = String.fromCharCode(e.which);
    if ("12345NOABC".indexOf(chr) < 0)
        return false;
};

ワンライナーについては、@mplungjanと@matthew-lockのコメントから

document.querySelector("#foo").onkeypress = function(e) {
    return "12345NOABC".indexOf(String.fromCharCode(e.which)) >= 0;
};
于 2013-02-11T05:22:44.543 に答える
22

これを試して

$(function(){
  $('#txt').keypress(function(e){
    if(e.which == 97 || e.which == 98 || e.which == 99 || e.which == 110 || e.which == 111 || e.which == 65 || e.which == 66 || e.which == 67 || e.which == 78 || e.which == 79 || e.which == 49 || e.which == 50 || e.which == 51 || e.which == 52 || e.which == 53){
    } else {
      return false;
    }
  });
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type='text' id='txt' value='' onpaste="return false" />

2018年3月9日更新

$(function(){
  $('#txt').keypress(function(e){
    // allowed char: 1 , 2 , 3, 4, 5, N, O, A, B, C
    let allow_char = [97,98,99,110,111,65,66,67,78,79,49,50,51,52,53];
    if(allow_char.indexOf(e.which) !== -1 ){
      //do something
    }
    else{
      return false;
    }
  });
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type='text' id='txt' value='' onpaste="return false" />

2020年11月25日更新

let textarea = document.getElementById('txt');

textarea.addEventListener('keydown', (e) => {
  if(['1','2','3','4','5', 'N', 'O', 'A', 'B', 'C'].indexOf(e.key) !== -1){
    // do something
  } else {
    e.preventDefault();
  }
});

CodePenデモ

于 2013-02-11T05:26:03.110 に答える
5

無効な値で送信されるフォームを制限するのか、それともユーザーがそれらの値を入力することさえできないようにするのかは、100%明確ではありません。他の答えは後者を扱っており、それはあなたが意図したことだと思いますがフォームの送信を阻止したいだけの人々(私のように)がここに到着するでしょう。

その場合:

要素のpattern属性を使用します。input

<input pattern="[REGEX HERE]">

https://developer.mozilla.org/en-US/docs/Learn/HTML/Forms/Form_validation

https://regex101.com/

于 2018-07-05T11:58:53.793 に答える
2

入力フィールドからいくつかの文字を無効にしたい場合は、次のようにすることができます。

<input type="text" onkeydown="return (event.keyCode!=86);"/>

86はVのコードです。次のリンクから他のキーのコードを確認してください。

https://www.cambiaresearch.com/articles/15/javascript-char-codes-key-codes

于 2017-05-28T15:33:03.283 に答える
2

html

<input type="text" name="" value="" id="testr">
<script type="text/javascript" src="testkeydown.js"></script>

javascript

document.getElementById('testr').addEventListener('keydown', function(e) {
    const regex = RegExp('[0-9a-zA-Z]');

    if (!regex.test(e.key) && e.key != 'backspace') {
        e.preventDefault();
    }
});

上記のコード例では、プレーンjsで0〜9、az、AZの間にないほとんどの文字を無効にするコードが表示されます。

もっと調べたい場合は、mdn keydownイベントをグーグルで検索して、Morzilla開発者ネットワークを探すことができます。

于 2019-03-20T14:57:04.323 に答える
0

誰かが純粋なjsソリューションを探している場合:このようにonkeydownイベントのキーを防ぐ必要があります

HTML

<input type="text" name="" value="" onkeydown="preventSomeKeys(event)">

Javascript

function preventSomeKeys(event){
  var keyCode = event.keyCode
  if([97,98,99,110,111,65,66,67,78,79,49,50,51,52,53].includes(keyCode)){
     return false;
  }
}
于 2020-06-05T08:34:00.223 に答える
0

パターン属性を使用する

ユーザーが不要な文字を入力するのを防ぐことはできませんが、ユーザーがフォームを送信すると、カスタマイズできる適切なエラーメッセージが表示されます。以下のこのコードを参照してください。
<input pattern="[1-5A-CNO].*" title="You can only use the following characters: 1 , 2 , 3, 4, 5, N, O, A, B, C">

試してみるためのソース/サンドボックス: https ://www.w3schools.com/tags/tryit.asp?filename = tryhtml5_input_pattern

于 2021-02-02T15:53:51.677 に答える