HTML5 Input type “number” in Firefox

前端 未结 6 1126
再見小時候
再見小時候 2020-12-20 12:12

I am working on an app that is only used by a few people in-house, so I feel comfortable telling them to only use Firefox or Chrome, so I can use HTML5.

I was workin

6条回答
  •  鱼传尺愫
    2020-12-20 12:45

    i am using firefox, i had the same issue developing my input type number typing caracters and spaces etc... anyway i m using angular 2 in this examples, its almost similar to javascript, so you can use this code in every case : here is the html :

    
    

    here is the function FilterInput :

    FilterInput(event: any) {
            let numberEntered = false;
            if ((event.which >= 48 && event.which <= 57) || (event.which >= 37 && event.which <= 40)) { //input number entered or one of the 4 directtion up, down, left and right
                //console.log('input number entered :' + event.which + ' ' + event.keyCode + ' ' + event.charCode);
                numberEntered = true;
            }
            else {
                //input command entered of delete, backspace or one of the 4 directtion up, down, left and right
                if ((event.keyCode >= 37 && event.keyCode <= 40) || event.keyCode == 46 || event.which == 8) {
                    //console.log('input command entered :' + event.which + ' ' + event.keyCode + ' ' + event.charCode);
                }
                else {
                    //console.log('input not number entered :' + event.which + ' ' + event.keyCode + ' ' + event.charCode);
                    event.preventDefault();
                }
            }
            // input is not impty
            if (this.validForm) {
                // a number was typed
                if (numberEntered) {
                    let newNumber = parseInt(this.numberVoucher + '' + String.fromCharCode(event.which));
                    console.log('new number : ' + newNumber);
                    // checking the condition of max value
                    if ((newNumber <= 30 && newNumber >= 1) || Number.isNaN(newNumber)) {
                        console.log('valid number : ' + newNumber);
                    }
                    else {
                        console.log('max value will not be valid');
                        event.preventDefault();
                    }
                }
                // command of delete or backspace was types
                if (event.keyCode == 46 || event.which == 8) {
                    if (this.numberVoucher >= 1 && this.numberVoucher <= 9) {
                        console.log('min value will not be valid');
                        this.numberVoucher = 1;
                        //event.preventDefault();
                        this.validForm = true;
                    }
                }
            }
            // input is empty
            else {
                console.log('this.validForm = true');
                this.validForm = false;
            }
        };
    

    in this function i had to just let the keypress of numbers, direction, deletes enter, so this function is just for the positive integer not doubles.

提交回复
热议问题