Cześć, macie jakiś sposób jak nie dać możliwości wpisania w input typu number znaków +,- i e?
Możesz użyć pattern.
https://www.w3schools.com/tags/att_input_pattern.asp
Akurat w moim przypadku potrzebuje całkowicie zablokować możliwość wpisania, bo są to pola gry sudoku, a pattern wyświetli mi tylko komunikat żeby zmienić wartość pola
To w takim razie musisz wycinać od razu niepotrzebne znaki przy wpisywaniu:
$("#myId").on('change keydown paste input', function(){
remove();// funkcja usuwająca niepotrzebne znaki, tu już pole do popisu
});
Właśnie coś w tym stylu próbuje, tylko nie wiem czemu jak wpisuje w input cyfrę to wykrywa event a jak wpisze te znaki to nie wykrywa. Jakby mi wykrywało ten event to zmieniłbym po prostu e.target.value i po sprawie, ale niestety :/ U mnie wygląda to tak :
import React from 'react';
import './tile.css';
class Tile extends React.Component {
inputValidator = (e) => {
console.log(e)
}
allOnChanges = (e) => {
this.inputValidator(e)
this.props.onChangeProp()
}
render() {
return (
<input onChange={(e) => this.allOnChanges(e)} value={this.props.value} className="tile" type="number"></input>
)
}
}
export default Tile;
Szybka poprawka. W ten sposób wykrywa mi event, ale przy wpisaniu tych znaków jak console loguje e.target.value, e.target.innerHTML, lub e.target.innerText To w konsoli pokazuje, że jest puste pole zamiast tych znaków
import React from 'react';
import './tile.css';
class Tile extends React.Component {
inputValidator = (e) => {
console.log(e.target.innerText)
}
allOnChanges = (e) => {
//this.inputValidator(e)
this.props.onChangeProp()
}
render() {
return (
<input onKeyPress={(e) => this.inputValidator(e)} onChange={(e) => this.allOnChanges(e)} value={this.props.value} className="tile" type="number"></input>
)
}
}
export default Tile;
Jak coś to zmieniłem trop i już nieaktualne :)