именно при нажатии на определенное место
Нажатый элемент я получаю при event.target
Но тогда как мне понять что нажатый элемент это именно тот что мне нужен?
id
кнопки. Обработчик ниже.$('#parentBlock').on('click', function(event){
const $chat = $('#chat')
switch(event.target.id){ // id нажатой кнопки
case "remove-select-txt": {
event.preventDefault(); // ? если нужно
// удалить выделенное в #chat
breack;
}
case "bold-select-text":{
// отметить жирным выделенное
breack;
}
}
})
Поэтому при отправке формы проверяйте минимальную сумму и не давайте пользователю продолжить, если условия не выполнены.
Ключ email как раз в объекте есть
<form id="test" method="post" action="/test">
<input name="phone" type="tel" value="9991112233"/>
<textarea name="description">Bla bla bla</textarea>
<input name="email" type="text" value="alex@mail.ru"/>
<!-- на кнопке нет атрибута name-->
<button type="submit">Submit</button>
</form>
<form id="test1" method="post" action="/test1">
<input name="phone" type="tel" value="9991112233"/>
<textarea name="description">Bla bla bla</textarea>
<!-- нет email в форме-->
<button type="submit">Submit</button>
</form>
/** Обработчик отправки формы
* @param event submit
* @returns Promise
*/
const onSubmit = function(e){
e.preventDefault();
// this - указывает на форму где сработало событие submit
// собираем все поля из формы
const data = Object.keys(this.elements) // здесь this.elements - HTMLFormControlsCollection
.reduce((res, key) => {
const {name, value} = this.elements[key]; // проверять не требуется !!!!
if (name) // есть атрибут name ?
res[name] = value;
return res;
}, {});
const options = {
headers: {
'Content-Type': 'application/json',
},
method: 'post',
body: JSON.stringify(data)
};
return fetch(this.action, options);
};
// событие submit для всех форм
$('form').on('submit', onSubmit);
По-хорошему, надо будет функцию copy сделать для разных типов.
выглядит как-то громоздко
const data = Object.keys(this.elements).reduce((res, key)=>({...res, [key]:this.elements[key].value});
let data = {}
for(let i in this.elements){
if( this.elements.hasOwnProperty(i)){
if( this.elements[i] ){
data[i] = this.elements[i].value
}
}
}
Если в форме нет инпута с name="email", то
const elements ={
text: 'писец',
//email:'' нет его в объекте
phone:'877346868'
}
const keys = Object.keys(elements)) // ['text', 'phome'] -- нет mail
keys.forEach(key => console.log(key, elements[key])
// выведет только
// text, 'писец'
// phone, '877346868'
// а mail - НЕ ВЫВЕДЕТ ПОТОМУ КАК НЕТ ЕГО
никак. вынесите чекпоинты в отдельный компонент и разместите его вне карты