Skip to content

Instantly share code, notes, and snippets.

@rezafikkri
Last active September 6, 2020 23:00
Show Gist options
  • Save rezafikkri/d9a60b59bd02f752800ca6a657daeb54 to your computer and use it in GitHub Desktop.
Save rezafikkri/d9a60b59bd02f752800ca6a657daeb54 to your computer and use it in GitHub Desktop.
Filter Input Number, menggunakan input type number
document.getElementById("floatTextBox").addEventListener('keyup', function (event) {
// jika yang ditekan bukan backspace dan del
if(event.keyCode !== 8 && event.keyCode !== 46) {
// jika value cocok dengan expression
if(/^-?\d+(,|\.)?\d*$/.test(this.value)) {
// set oldValue = value dan keluar dari function;
this.oldValue = this.value; return 0;
// selain dari itu, jika property oldValue ada
} if(this.hasOwnProperty('oldValue')) {
// set value = value lama
this.value = this.oldValue; return 0;
// selain dari itu, jika yang dimasukkan adalah karakter (-); ini untuk menghandle jika awalnya input masih kosong dan dimasukkan karakter (-) maka langsung keluar dari function;
} if(event.key === '-') return 0;
// selain dari itu, kosongkan value input; ini untuk menghandle jika awalnya input masih kosong dan dimasukkan karakter selain (-) dan angka;
this.value = '';
// selain dari itu, jika yang ditekan adalah backspace dan del
} else if(event.keyCode !== 8 || event.keyCode !== 46) {
// jika length value = 0, itu artinya tidak ada lagi value di input, maka delete property oldValue dan keluar dari function
if(this.value.length === 0) delete this.oldValue; return 0;
// selain dari itu, set oldValue = value
this.oldValue = this.value;
}
});
@rezafikkri
Copy link
Author

rezafikkri commented Sep 6, 2020

Live Preview: https://jsfiddle.net/rezafikri/39x8c16h/1/
Tested on: Mozilla Firefox 78 and Google Chrome 83

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment