テキストフィールドに数値のみを受け入れるようにするにはどうすればよいですか?文字や記号を押した場合、テキストフィールドは入力せず、数字のみを許可する必要があります。
これを行うためのRails方法はありますか?
サーバー側で数値を検証します。
class SomeModel
validates :some_column, :numericality => {:only_integer => true}
end
クライアント側で、javascriptを介して入力マスクを追加します https://github.com/ruoso/jquery-regex-mask-plugin
$('#some_input').regexMask(/^\d+$/);
使用する number_field_tag
、これはHTML5番号フィールドを生成します
http://apidock.com/Rails/ActionView/Helpers/FormTagHelper/number_field_tag
@clyfeの答えは良いですが、そのプラグインはHTML5では機能しませんtype=number
要素。整数のみを許可する簡単なjQueryコードを次に示します。
$("input[type=number]").keypress(function(event) {
if (!event.charCode) return true;
ch = String.fromCharCode(event.charCode);
return (/[\d]/.test(ch));
});
小数またはカンマを許可するには、正規表現をプラグインの正規表現のように見せます。 https://github.com/ruoso/jquery-regex-mask-plugin/blob/master/regex-mask-plugin.js#L8 :
/^((\d{1,3}(\,\d{3})*(((\,\d{0,2}))|((\.\d*)?)))|(\d+(\.\d*)?))$/
(ロケールが異なれば、小数とカンマの規則も異なるため、数字だけを許可する方がおそらく安全です:-)
これは、ここで言及されているChromeバグの回避策であることに注意してください: