4

一般的に使用される Javascript 関数を使用して、数値のみをテキスト フィールドに入力できるようにしています。

function isNumberKey(evt)
{
  var charCode = (evt.which) ? evt.which : event.keyCode;
  if (charCode != 46 && charCode > 31
    && (charCode < 48 || charCode > 57))
     return false;

  return true;
}

これを onkeypress と呼び、数字以外は表示されないようにします。テキスト フィールドにダッシュ (-) を入力できるように変更しようとしています。ダッシュキーコードは189なので、これを試しました:

function isNumberKey(evt)
{
  var charCode = (evt.which) ? evt.which : event.keyCode;
  if (charCode != 46 && charCode != 189 && charCode > 31
    && (charCode < 48 || charCode > 57))
     return false;

  return true;
}

条件文がダッシュ文字を受け入れると考えていましたが、うまくいかなかったようです。これがなぜなのかについてのアイデアはありますか?ご協力いただきありがとうございます!

4

6 に答える 6

9

keypress イベントを使用している場合は、ダッシュ/ハイフンに文字コード 45 を使用する必要があります。

keydown/keyup イベントを使用している場合は、109189を使用して、テンキーのマイナス キーと (通常は) P キーの上にあるキーをカバーする必要があります。

if (charCode != 46 && charCode != 45 && charCode > 31
    && (charCode < 48 || charCode > 57))
     return false;

デモ: http://jsfiddle.net/J6B7U/

関数内のどのキーコードがどの a であるかについて疑問がある場合は、console.log(charCode);デバッグに役立ちます。

(ユーザーがブラウザの編集メニューまたはドラッグ アンド ドロップを使用してフィールドを変更する可能性があるため、キー イベントをトラップするだけでは、無効なデータの入力を防ぐのに十分ではないことに注意してください。)

于 2013-11-05T09:21:40.073 に答える
4

これを試して

  function isNumberKey(evt)
  {
     var charCode = (evt.which) ? evt.which : event.keyCode
     if (charCode != 45  && charCode > 31 && (charCode < 48 || charCode > 57))
        return false;

     return true;
  }

htmlで

<input type="text" onkeypress="return isNumberKey(event)">
于 2014-02-11T09:48:10.670 に答える
0

キーコードではなく、ダッシュの文字コードである 45 を使用します。

于 2013-11-05T09:18:32.117 に答える
0

これは私が尋ねたときに出てきたので、現時点では廃止されているkeyCodeことをここに追加する価値があるかもしれません。charCode

チェックを追加するか、「-」文字も受け入れる isNumberKey 関数を実装するより良い方法は次のとおりです。

const isNumberKey = (event: KeyboardEvent) => 
   ((event.key.length > 1) || event.key.match(/^\d|-$/))

このようにして、1 文字のキーが押されたときに数字のみが許可されるようにしながら、特殊キーがその機能を実行できるようにします。

于 2021-04-16T22:39:36.920 に答える