2017-02-02 15 views
0

event.preventDefault()がChromeのAndroid OSで動作していません。同じアクションがChromeのIOSで動作しています。 私はevent.stopPropagation()、event.stopImmediatePropagation()も使用しました。event.preventDefault()がAndroidのChrome OSで動作しない

HTML:

<input class="otherAmount" type="text"id="pVal" name="pVal" onkeydown="validatePaymentToTwoDecimal(this,event);"/>   

Javaスクリプト:

function validatePaymentToTwoDecimal(el, evt) { 

     if(!$.isNumeric(evt.key)|| evt.key=="."){ 
      evt.preventDefault(); 
      evt.stopPropagation(); 
      evt.stopImmediatePropagation(); 
      return false; 
     } else { 
       return true; 
     } 
} 
+0

どのような種類のイベントを処理していますか? –

+0

keydown.Though onKeyDownがfalseを返しても、私はhtmlフィールドのキー値を参照してください。 最初はKeypressを使ってみました。 KeypressはAndroid上で動作せず、IOS上で動作します。だからkeydownに移動 –

+0

あなたのコードはどこですか? –

答えて

2

an answer for a similar questionに基づいて、あなたが入力をフィルタリングするためにこれを行うことができるようになります。

jQueryのソリューション

$("#pVal").on(
    "input change paste", 
    function filterNumericAndDecimal(event) { 
     var formControl; 

     formControl = $(event.target); 
     formControl.val(formControl.val().replace(/[^0-9.]+/g, "")); 
    }); 

バニラJavaScriptソリューション

var pInput; 

function filterNumericAndDecimal(event) { 
    var formControl; 

    formControl = event.target; 
    formControl.value = formControl.value.replace(/[^0-9.]+/g, "")); 
} 

pInput = document.getElementById("pVal"); 
["input", "change", "paste"].forEach(function (eventName) { 
    pInput.addEventListener(eventName, filterNumericAndDecimal); 
}); 

これは、正規表現を使用して数字と小数点文字を削除することで機能します。

+0

これは機能しました。ありがとうございました。 –

+0

うれしい私は同僚の開発者を助けることができました:-) –

関連する問題