У меня есть форма с несколькими полями ввода. Одно из полей используется для установки тегов. Всякий раз, когда пользователь нажимает клавишу ввода, я хочу добавить тег.
Все это прекрасно работает. Моя проблема в том, что когда пользователь нажимает клавишу ввода, событие распространяется на форму, и форма думает, что она отправляется. Я не хочу, чтобы это случилось. Я хочу, чтобы форма отправлялась только при нажатии указанной кнопки отправки.
Это моя форма:
<form>
<div className="tiny-margin-bottom medium-margin-top">
<div className="tags__container">
<InputField
type="text"
placeHolder="Add tags that are related to your business (for example 'Restaurant')"
value={tagInput}
onChange={setTagInput}
onKeyPress={handleKeyPress}
label="Hit 'Enter' to save tags"
/>
<div className="tags__submit" onClick={addTag}>
→
</div>
</div>
<div className="tags">
{values && values.tags ? renderTags(values.tags) : null}
</div>
</div>
<div className="popup__button medium-margin-top">
<button className="boxed-button " onClick={handleSubmit}>
Create Project
</button>
</div>
</form>
И это две мои функции:
Для когда ввод вводится в поле ввода:
const handleKeyPress = event => {
event.stopPropagation();
if (event.key === "Enter") {
addTag();
return false;
}
};
Для отправки формы:
const handleSubmit = event => {
event.preventDefault();
switch (true) {
case !values.title:
setFormError("Please give your project a title");
break;
case !values.country:
setFormError("Please choose the country of your target audience");
break;
case !values.lang:
setFormError("Please choose the language of your target audience");
break;
case values && values.tags && values.tags.length >= 3:
setFormError("Please add at least 3 tags");
break;
default:
setSubmitting(true);
newProject(values, setSubmitting);
setFormError(null);
break;
}
};