是否可以在 formik 的密码字段上显示大写锁定指示器?
Is it possible to show a caps lock indicator on a password field in formik?
我想在 formik 表单的密码字段上显示大写锁定指示器。我需要检测 onKeyUp 事件,这(检测键盘事件)是否可以使用 formik 和密码字段组件?
这与 Formik 没有任何关系。您可以像在普通输入上一样使用 onKeyDown()
:
class Login extends React.PureComponent {
state = { warning: false };
/**
* Hide warning when losing focus.
* @param handleBlur Formik blur event.
* @param event Input event.
*/
onBlur(handleBlur, event) {
this.setState({ warning: false });
handleBlur(event);
}
/**
* Detect caps lock being on when typing.
* @param keyEvent On key down event.
*/
onKeyDown = keyEvent => {
if (keyEvent.getModifierState("CapsLock")) {
this.setState({ warning: true });
} else {
this.setState({ warning: false });
}
};
/**
* Show a password field that detects the caps lock key.
* @returns Form with a password field.
*/
render() {
return (
<Formik initialValues={{ password: "" }}>
<Form>
<label htmlFor="password">Password</label>
<Field name="password">
{({ field }) => (
<input
{...field}
id="password"
onBlur={this.onBlur.bind(this, field.handleBlur)}
onKeyDown={this.onKeyDown}
type="password"
/>
)}
</Field>
{this.state.warning && <div>Caps Lock On!</div>}
</Form>
</Formik>
);
}
}
看到它工作 here。
这是一个最小的例子。我可能会限制 onKeyDown()
检查。
我想在 formik 表单的密码字段上显示大写锁定指示器。我需要检测 onKeyUp 事件,这(检测键盘事件)是否可以使用 formik 和密码字段组件?
这与 Formik 没有任何关系。您可以像在普通输入上一样使用 onKeyDown()
:
class Login extends React.PureComponent {
state = { warning: false };
/**
* Hide warning when losing focus.
* @param handleBlur Formik blur event.
* @param event Input event.
*/
onBlur(handleBlur, event) {
this.setState({ warning: false });
handleBlur(event);
}
/**
* Detect caps lock being on when typing.
* @param keyEvent On key down event.
*/
onKeyDown = keyEvent => {
if (keyEvent.getModifierState("CapsLock")) {
this.setState({ warning: true });
} else {
this.setState({ warning: false });
}
};
/**
* Show a password field that detects the caps lock key.
* @returns Form with a password field.
*/
render() {
return (
<Formik initialValues={{ password: "" }}>
<Form>
<label htmlFor="password">Password</label>
<Field name="password">
{({ field }) => (
<input
{...field}
id="password"
onBlur={this.onBlur.bind(this, field.handleBlur)}
onKeyDown={this.onKeyDown}
type="password"
/>
)}
</Field>
{this.state.warning && <div>Caps Lock On!</div>}
</Form>
</Formik>
);
}
}
看到它工作 here。
这是一个最小的例子。我可能会限制 onKeyDown()
检查。