I have this code bellow and my trouble is when I want to check whether user has entered a number in front using startsWith()
function, I get a "TypeError: usernameField.startsWith is not a function".
How do I prevent user from entering a username that starts with a number, but allow numbers only after alpha characters, such that when they put a number in front it shows for glance and then gets replaced with nothing?
import React, { Component } from "react";
import SignupForm from "./components/SignupForm";
class App extends Component {
constructor() {
super();
this.state = {
username: "",
};
this.changeValue = this.changeValue.bind(this);
this.removeNumbers = this.removeNumbers.bind(this);
}
changeValue(event) {
this.setState({
[event.target.name]: event.target.value,
});
}
removeNumbers(usernameField) {
let numbers = /[0-9]/gi;
if (usernameField.startsWith(numbers)) {
usernameField.target.value = usernameField.target.value.replace(numbers, "");
}
}
render() {
return (
<div className="App">
<SignupForm
changeValueHandler={this.changeValue}
usernameValue={this.state.username}
usernameCharacterFilter={this.removeNumbers}
/>
</div>
);
}
}
export default App;
import React from "react";
export default function SignupForm(props) {
return (
<div className="container">
<h1>Signup Form</h1>
<div className="form-div">
<form>
<input
name="username"
type="text"
placeholder="Username"
onChange={props.changeValueHandler}
onKeyUp = {props.usernameCharacterFilter}
value={props.usernameValue}
/>
</form>
</div>
</div>
);
}