2016-07-05 4 views
-1

inputtextフィールドに数字と小数点のみを許可します。 私のコードをkeypressイベントで使用すると、アルファベットが入力されたときにfalseを返しますが、keyupと一緒に使用すると正しく動作します。 マイコード:javascriptのKeyPressとキーアップ

function OnKeyPress(e,DivID) { 

if (e.which != 8 && e.which != 0 && e.which != 13 && e.which != 190 && (e.which < 48 || e.which > 57)) { 
    return false; 
        // event.preventDefault(); 
    } 

    var val = j$('[id$='+DivID+']').val(); 


    if(DivID == 'ProximityCPPercentage') 
    { 
     var x = event.which || event.keyCode; 
     if(val.indexOf('.') >= 0 && e.which == 46) 
      return false; 
     else if(e.which == 46 && val.length == 3) 
      return false; 
     if(val.indexOf('.') == 0) 
      val = '0' + val; 
     if(e.which != 46) 
     {       
      strval = val + String.fromCharCode(x); 
      var re = /^((.|0|[1-9]\d?)(\.\d{1})?|100(\.0?)?)$/; 
      if(!re.test(strval)) 
       return false; 
     } 
    }    
    else if(val.indexOf('.') >= 0) 
    { 

     var reg =/^(\d{0,4}\.?(\d{0,1})|\d{0,6})?$/gm;     
     if(!reg.test(val)) 
     { 
      j$('[id$='+DivID+']').val(val.substring(0, val.length - 1));      
     } 

    }     
    else if(e.which != 190) 
    { 
     if(val.length > 5)       
     return false; 
    } 

} 

私は、入力フィールドのonkeypressでは属性でこの機能を使用する場合は、アルファベットを許可されていませんが、それはアルファベットを可能にするんonkeyupの私が使用している場合。入力中には何も、警告火災:値が入力に設定される前に

+0

2つの異なるイベントに違いがあります。いくつかのキーコードは、必ずしも同じではありません。 – adeneo

答えて

0

[OK]を、私はダウンキーでは、あなたhttps://jsfiddle.net/gb0kwom0/3/

のために何が起こっているかの説明と簡単なフィドルを作成し、(結果をイベントをキャプチャしません値)、この例を参照してください。

<input type="text" onkeypress="return onPress()"> 

<script> 
    function onPress(){alert(); return false;} 
</script> 

キーアップでは、入力に値が設定された後でイベントをキャプチャします(結果:値が設定されてから警告が発生します)。この例を参照してください。

<input type="text" onkeyup="return onUp()"> 

<script> 
    function onUp(){alert(); return false;} 
</script> 

あなたの問題を解決するには、値をリセットする必要があります。

結果は次のようになります。入力に値が設定された後でイベントをキャプチャし、値を空に戻します。この例を参照してください。

注:この例では、違いを示すことだけで、使用すべきではない、それは何に戻って全体の値をリセットします。この方法は理想的ではないともっとたくさんかかります

<input type="text" onkeyup="onUp2(this)"> 

<script> 
    function onUp2(obj){alert(); obj.value='';} 
</script> 

あなたがonkeypressを代わりに使用しなければならない理由です。

関連する問題