Хотите улучшить этот вопрос? Переформулируйте вопрос, чтобы он соответствовал тематике «Stack Overflow на русском».
Закрыт 9 месяцев назад.
Всем доброго времени суток!
Есть таблица редактирование данных, удаление, добавление. Помогите пожалуйста понять, куда вставить условие, чтобы при нажатии на кнопку отправки новой записи (в таблицу), ничего не происходило.
На данный момент, при пустых инпутах, в таблицу добавляется строка с пустыми данными. Requred в input не сработал.
(function() {
'use strict';
var userData = [{
name: 'Soaf',
quantity: '3',
price: '150',
},
{
name: 'Cup',
quantity: '10',
price: '59',
},
{
name: 'Chair',
quantity: '2',
price: '459',
},
{
name: 'Table',
quantity: '2',
price: '19444',
},
{
name: 'Bin',
quantity: '2',
price: '1843',
},
{
name: 'Bear',
quantity: '8',
price: '3489',
},
{
name: 'Phone',
quantity: '4',
price: '16843',
}
];
// Обновить таблицу в соответствии с данными
var updateTable = function() {
var dataTable = document.getElementById('table1'),
tableHead = document.getElementById('table-head'),
tbody = document.createElement('tbody');
while (dataTable.firstChild) {
dataTable.removeChild(dataTable.firstChild);
}
dataTable.appendChild(tableHead);
for (var i = 0; i < userData.length; i++) {
var tr = document.createElement('tr'),
td0 = document.createElement('td'),
td1 = document.createElement('td'),
td2 = document.createElement('td'),
td3 = document.createElement('td'),
td4 = document.createElement('td'),
btnDelete = document.createElement('input'),
btnEdit = document.createElement('input');
btnDelete.setAttribute('type', 'button');
btnDelete.setAttribute('value', 'Delete');
btnDelete.setAttribute('class', 'btnDelete');
btnDelete.setAttribute('id', i);
btnEdit.setAttribute('type', 'button');
btnEdit.setAttribute('value', 'Edit');
btnEdit.setAttribute('id', i);
tr.appendChild(td0);
tr.appendChild(td1);
tr.appendChild(td2);
tr.appendChild(td3);
tr.appendChild(td4);
td0.innerHTML = userData[i].name;
td1.innerHTML = userData[i].quantity;
td2.innerHTML = userData[i].price;
td3.appendChild(btnEdit);
td4.appendChild(btnDelete);
btnDelete.onclick = (function() {
return function() {
if (confirm("Вы уверены что хотите удалить?")) {
var deleteId = this.getAttribute('id');
userData.splice(deleteId, 1);
updateTable();
refreshForm();
}
};
})();
btnEdit.addEventListener('click', function() {
var editId = this.getAttribute('id');
window.scrollTo({
top: 0,
left: 0,
behavior: 'smooth'
});
updateForm(editId);
}, false);
tbody.appendChild(tr);
}
dataTable.appendChild(tbody);
}
// Задаю форму для редактирования данных
var updateForm = function(id) {
console.log(userData[id].name);
var quantityField = document.getElementById('quantity'),
nameField = document.getElementById('name'),
priceField = document.getElementById('price'),
saveButton = document.getElementById('btnSave');
quantityField.value = userData[id].quantity;
nameField.value = userData[id].name;
priceField.value = userData[id].price;
saveButton.value = 'Update';
saveButton.setAttribute('data-update', id);
}
// Сохраняю новые данные
var saveData = function() {
var
newQuantity = document.getElementById('quantity').value,
newName = document.getElementById('name').value,
newprice = document.getElementById('price').value,
datatoAdd = {
quantity: newQuantity,
name: newName,
price: newprice
};
userData.push(datatoAdd);
updateTable();
}
// Обновляю данные
var updateData = function(id) {
var
upQuantity = document.getElementById('quantity').value,
upName = document.getElementById('name').value,
upprice = document.getElementById('price').value;
userData[id].quantity = upQuantity;
userData[id].name = upName;
userData[id].price = upprice;
updateTable();
}
// Обновить форму
var refreshForm = function() {
var
quantityField = document.getElementById('quantity'),
nameField = document.getElementById('name'),
priceField = document.getElementById('price'),
saveButton = document.getElementById('btnSave');
quantityField.value = '';
nameField.value = '';
priceField.value = '';
saveButton.value = 'add';
saveButton.removeAttribute('data-update');
}
// Главные функции
var init = function() {
updateTable();
var btnSave = document.getElementById('btnSave'),
btnRefresh = document.getElementById('btnRefresh');
btnSave.onclick = function() {
if (btnSave.getAttribute('data-update')) {
updateData(btnSave.getAttribute('data-update'));
} else {
saveData();
}
refreshForm();
};
btnRefresh.onclick = function() {
refreshForm();
};
};
init(); //Инициализация таблицы
})();
<table class="table" id="table1">
<thead id="table-head">
<tr>
<th class="table-th__name"><input onclick='sortTableName()' type="checkbox" id="stateInput3">
<label for="stateInput3" class="arrows3"></label>Name</th>
<th class="table-th__quantity">Quantity</th>
<th class="table-th__price"> <input onclick='sortTable(2)' type="checkbox" id="stateInput2">
<label for="stateInput2" class="arrows2"></label>Price</th>
<th class="table-th__action">Action</th>
<th class="table-th__none"></th>
</tr>
</thead>
</table>
<div class="form-container">
<form class="form">
<input type="text" maxlength="15" id="name" name="name" placeholder="Name" required />
<input type="text" maxlength="15" id="quantity" name="quantity" placeholder="Quantity" required />
<input type="text" maxlength="15" id="price" name="price" placeholder="Price" required />
<input type="submit" value="Add" id="btnSave" required />
</form>
</div>
Тебе нужно убрать обработчик onlick
с кнопки и добавить обработчик на форму(событие onsubmit
) также не забудь прописать строчку e.preventDefault()
в обработчике
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Ситуация проста: есть некий html-код, который должен выводиться юзеруНо код этот может генерировать кто угодно, поэтому я использую iframe в режиме...
Вопрос такой, есть цикл при котором мы выводим все что нашли в массиве
Как при наведении на ячейку таблицы с числами в JS подсветить еще например 3 ячейки, близких по значению к основной? Меня интересует не готовое...
Имеется презентацияНа 2 слайде в консоли отладки для более удобной отладки отображается переменная i2 и какой "case" сработал в цикле switch-case