2

ユーザーがテキスト フィールド (input type="text") に入力できるようにする JavaScript の方法はありますか? (つまり、負の数と正の数のみ)

4

5 に答える 5

2
<input type='text' onkeypress='return numbersOnly(this,event,false,true);'>

function numbersOnly(Sender,evt,isFloat,isNegative) {
            if(Sender.readOnly) return false;       

            var key   = evt.which || !window.event ? evt.which : event.keyCode;
            var value = Sender.value;

            if((key == 46 || key == 44) && isFloat){                
                var selected = document.selection ? document.selection.createRange().text : "";
                if(selected.length == 0 && value.indexOf(".") == -1 && value.length > 0) Sender.value += ".";
                return false;
            }
            if(key == 45) { // minus sign '-'
                if(!isNegative) return false;
                if(value.indexOf('-')== -1) Sender.value = '-'+value; else Sender.value = value.substring(1);
                if(Sender.onchange != null) {
                    if(Sender.fireEvent){
                        Sender.fireEvent('onchange');
                    } else {
                        var e = document.createEvent('HTMLEvents');
                            e.initEvent('change', false, false);
                        Sender.dispatchEvent(e);
                    }
                }

                var begin = Sender.value.indexOf('-') > -1 ? 1 : 0;
                if(Sender.setSelectionRange){
                    Sender.setSelectionRange(begin,Sender.value.length);
                } else {
                    var range = Sender.createTextRange();
                    range.moveStart('character',begin);
                    range.select();                 
                }

                return false;
            }
            if(key > 31 && (key < 48 || key > 57)) return false;
        }

関連する質問: HTML テキスト入力は数値入力のみを許可します

于 2012-11-08T13:48:43.923 に答える
1

リスナー (つまり、javascript) を onKeyUp イベント (またはニーズに最適なイベント) にバインドし、ユーザーが挿入しようとしているものを確認できます。次に、彼にその文字を挿入させるかどうかを決定できます。

注: ユーザーはテキストを書き込む代わりに貼り付けることができるため、コピー/貼り付けイベントも制御する必要があります。

于 2012-11-08T13:29:43.400 に答える
1

これを使って。できます。

https://raw.github.com/SamWM/jQuery-Plugins/master/numeric/jquery.numeric.js

$(document).ready(function(){
    $(".numeric").numeric({negative :true});
});​
于 2012-11-08T14:04:56.930 に答える
0

次の正規表現を試してください。

/^-?\d+$/
于 2012-11-08T13:30:17.667 に答える
0

これは、正と負の整数のみに対して私が思いついた最良の解決策です

<input type="text" onkeyup="this.value = (this.value[0] === '-') ? ('-' + this.value.replace(/[^0-9]/g, '')) : (this.value.replace(/[^0-9]/g, ''));" pattern="^-?\d+" />

ここで確認できますhttp://jsfiddle.net/4g08ofz6/

 

パターン

pattern="^-?\d+"

値が貼り付けられたりドラッグされたりしたときの検証の追加レイヤーにすぎませんが、サーバー サイトで常に検証する必要があることを忘れないでください。

于 2015-06-13T16:32:46.443 に答える