2016-10-24 16 views
0

私は10進数の後に2番目の数値を入力できないようにします。私のコードはkeydownイベントにあります。テキストボックスに(50.0言う)は、ユーザーがテキスト上で選択した場合今、トラブルがあるkeydownイベントでテキストが選択されていることを確認してください

$scope.Inputkeydown = function (event, value) {   
    if (event.keyCode != 8) { 
     if (value != null && value != undefined && value != "") { 
      var regex = /^\d*\.\d$/; //this regex passes only decimal numbers with one digit after decimal 
      if (regex.test(value)) {     
        event.preventDefault(); 
      } 
     } 
    } 

};  

とテキストボックスの値が50.0であるのように、それは、あまりにも防止取得され、その時点でプレス5を言う:以下 は私のコードです正規表現はそれを許可し、それが入力されるのを防ぐようになっています。

テキストがコピーされている場合はkeydownをチェックできますか?または他の方法がありますか?

+0

「KeyPress」でこれをトリガーしようとしましたか? – Weedoze

+0

10進数の後の値がゼロの場合、ユーザーは数字を入力できるようにしますか? – SPViradiya

答えて

0

代わりにそれを入力することからユーザーを防止する、あなただけのキー押下後にそれを削除できます。

function filterDecimals(inp) { 
    return inp.replace(/^(\d*\.\d)\d*$/g, '$1'); 
} 

それとも、あなたはそれの後にすべてのものを削除したい場合は、.*

を有する第2 \d*を交換しますEDIT(使用例)

この関数は、テキストを入力として取り込み、新しいフィルタ処理されたテキストを返します。これを使用するには、次のようにkeypressにイベントハンドラを添付してください:

<input type="text" id="filteredbox"> 

<script> 
var txt = document.getElementById("filteredbox"); 

// on keyup event (you can change to keypress if you want, but this is more logical here 
txt.addEventListener("keyup", function(){ 
    // sets value of txt to the returned data from filterDecimals() 
    // if statement: only filters it if necessary; this eliminates the "selected text" issue you mentioned 
    if (this.value !== filterDecimals(this.value)) { 
     this.value = filterDecimals(this.value); 
    } 
}); 
</script> 
+0

私はkeydownでそれを行うことができますどのような方法? – pankaj

+0

あなたのコードがどのように見えるか分かりませんが、私は答えを編集しました。もっと助けが必要な場合は教えてください。 – Andrew

+1

Woops!私のコードを編集してエラーを修正しました。これは今あなたのために働くはずです。 – Andrew

関連する問題