2017-01-30 27 views
1

数字またはマイナス以外のすべての文字を除外したい。jQueryが正規表現で正しく動作しない

マイナスになるか、どこにでも入力することはできません。数字の後でキーボードの矢印ボタンを使用した場合にのみ、マイナスになります。

私が望むのは、-60などのように入力するだけです。 変更する必要はありますか?

$('.minus').keyup(function() { 
 
    var txt = $(this).val(); 
 
    var nwtxt = txt.replace(/[^\d-]/ig, ""); 
 
    $(this).val(nwtxt); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<input type="number" maxlength="9" class="tekstvakjes minus">

+0

、あなたは右* *削除意味ですか? – TheLostMind

+0

したがって、負数のみを許可したいですか? – baao

+0

いいえ、負の数と正の数の両方を含める – Webconstructor

答えて

3

代わりの入力タイプ使用にテキスト

+1

何を言っていたのですか(これは、 'keyup'イベントが発生する前に数値型がバリデーションを追加し、イベントを発生させる前に値を取り除くためです) – Kaddath

0

を使用して、私はそれはあなたがいない何かを挿入するたびにそのブラウザの防衛meganismのいくつかの種類だと思います数値入力フィールドの中にある数字とそれから値を要求すると、単純にnull/undefinになりますed。 type = "text"では、これはうまくいきます。

また、常にテキストを置き換えるため、カーソルはテキストの最後に置かれます。したがって、キーボードの操作だけで数字の前に - (ダッシュ)を挿入することはできません。数字の前にあるダッシュは無効です!

番号フィールドに-60と入力することもできますが、最初に挿入する必要があります。 60、次にマイナス文字。

また、keyUpの代わりに$('.minus').input(を使用することをお勧めします。マウスを使用して値(とスクロールホイール)も挿入できるためです。 * *除外することで

$('.minus').keyup(function() { 
 
    var txt = $(this).val(); 
 
    console.log("value i got:",txt); //i added this logging to see that you didn't get anything on number. 
 
    var nwtxt = txt.replace(/[^\d-]/ig, ""); 
 
    if(nwtext !==txt) //add this if statement so your cursor does not constantly jump to the end! 
 
    $(this).val(nwtxt); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<input type="number" maxlength="9" class="tekstvakjes minus" placeholder="number"> 
 
<input type="text" maxlength="9" class="tekstvakjes minus" placeholder="text">

関連する問題