LoginSignup
0
0

More than 1 year has passed since last update.

Wordpressの特定のフォームに数字以外を入力させないようにする方法

Posted at

フォームに数字以外を入力したくない時ってありますよね?
クライアントからの依頼で、これに対応しようとして、散々苦労したことがありましたので、こちらにメモしておこうと思います。

普通に考えると…
0123456789だけを入力できるようにすればいい!

ってなるんですが、実はこれだけでは、「全角入力」のキーはすべて素通りで入力できてしまいます。

概要

●input type属性はtelにする

これにより、スマートフォンでは数字以外が入力できなくなります。
(ただしコピペされたら素通り)

●jQueryで全角入力を制御する。

これにより、PCで半角数字以外が入力された時に弾きます。

input type属性をnumberにしない理由 その1
number属性だと、スマートフォンではなんでも入力できてしまいます。

input type属性をnumberにしない理由 その2
パソコンで、↑、↓を押してしまうと値が変わってしまいます。

jQueryで全角入力を制御

下記のようなコードを入力します。
#formfieldidは環境に合わせて書き換えてください。
記載する場所ですが、プラグイン「Simple Custom CSS and JS」 がオススメです。

$(document).on('keydown', '#formfieldid', function(e){
  let k = e.keyCode;
  let str = String.fromCharCode(k);
  if(!(str.match(/[0-9]/) || (37 <= k && k <= 40) || k === 8 || k === 46 || k ===13)){
    return false;
  }
});

$(document).on("keyup","#formfieldid", function(e){
  this.value = this.value.replace(/[^0-9]+/i,'');
});

$(document).on("blur","#formfieldid", function(e){
  this.value = this.value.replace(/[^0-9]+/i,'');
});
0
0
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0