Issue
I'm trying to make my material ui textfield to accept the format of hh:mm:ss. What I mean is being able to change the numbers on hh mm and ss, while : are automatic. Any tips will be appreciated.
Solution
use an onchange and then don't allow non numerics and insert the colons
import{ useState } from "react";
import TextField from "@mui/material/TextField";
function App() {
// TimeInput component defined inside App
const TimeInput = () => {
const [time, setTime] = useState("");
const handleTimeChange = (e) => {
let value = e.target.value;
// Remove any non-numeric characters except colons
value = value.replace(/[^0-9:]/g, "");
// Auto-insert colons
if (value.length === 2 || value.length === 5) {
value += value.endsWith(":") ? "" : ":";
}
// Limit length to 8 characters (hh:mm:ss)
value = value.slice(0, 8);
setTime(value);
};
return (
<TextField
label="Time (hh:mm:ss)"
value={time}
onChange={handleTimeChange}
placeholder="00:00:00"
/>
);
};
return (
<div className="App">
<h1>Time Input Example</h1>
<TimeInput />
</div>
);
}
export default App;
below is the link for it in code sandbox.
Answered By - Bryan Dellinger
0 comments:
Post a Comment
Note: Only a member of this blog may post a comment.