isAuthenticated
инициализируются после асинхронного вызова loadUser
. Поэтому при старте приложения пользователь ещё не авторизован и isAuthenticated
в store равно false. setDate(date, triggerChange, dateStrFormat)
- установка даты...
function getStartEndDateOfMonth(domElement, inputElement, event) {
let date = new Date();
date.setMonth(Array.from(domElement).indexOf(event.target) + 1);
date.setDate(0);
let dateStart = `1.${normalizeDate(date.getMonth() + 1)}.${date.getFullYear()}`;
let dateEnd = `${date.getDate()}.${normalizeDate(date.getMonth() + 1)}.${date.getFullYear()}`;
//inputElement.value = `${dateStart} - ${dateEnd}`; !!! - это не требуется
flat.setDate ([dateStart, dateEnd]); // !!! - установка диапазона дат в плагин
}
...
Скажите, как в 2020 году осуществить задачу синхронного запроса .
XMLHttpRequest
используйте window.fetch
Асинхронные запросы уродуют логику программы
Promise
fetch('baseindex_numberoflines.php', {method: 'post' , body: {id: '735474'}})
.then(newdata=> {
// блок 1 - выполнится после успешного запроса
document.getElementById ("newinfo").innerHTML = newdata );
return "test"
})
.then(test=> {
// выполнится после блок 1
})
.catch(err=>{
// блок выполнится после ошибки
}
результат(число), должен оставаться, а результат тоже удаляется. Что именно подправить, чтобы результат оставался?
document.querySelector('input[name=button]').onclick = function(e){
e.preventDefault(); // блокировать действие по умолчанию
const arr1 = ['Капиуcта', 'Капитcл'];
const startingSubstring = (arr) => {
const charts = arr[0].split('');
return charts.reduce((result, chart) => {
const isEvery = arr.every(itemArr => itemArr.startsWith(result + chart));
return isEvery ? (result + chart) : result;
}, '');
};
console.log(startingSubstring(arr1)); //Капи
<input id="date" type="time" />
каким образом можно с помощью jquery-validation
plugin сделать так, что если все поля валидны, то снимался type=disabled у кнопки и в случае любого error на поле - кнопка опять получала type=disabled
$('#form input').on('change', () => {
const isValid = $('#form').valid(); // проверяем всю форму при каждом изменении любого поля
$('#form input[type=submit]').attr('disabled', !isValid);
return isValid; // выполнить запрос если true
});
<input type="radio" name= "priority" id="radio1" value="1"/> Высокий <!-- дней 1-->
<br/>
<input type="radio" name= "priority" id="radio2" value="10"/> Низкий <!-- дней 10-->
<br/>
<input type="text" name="date" id="date"/>
change
для input[type=radio]
$('input[type=radio]').on('change', function (e) {
const count = parseInt(e.target.value); // получить кол-во дней
const date = new Date();
date.setDate(date.getDate() + count); // добавляем к текущей дате дни
$('#date').val(date.toISOString())
})
formValidate(e) {
const el = e.target; // элемент на котором произошло событие
const { value, name} = el; // значение и имя элемента
switch(name){
case ‘phone’: ... this.validatePhone(value) ...
...
}
}
form.elements[i].addEventListener('blur', e=> validation.formValidate(e));
const models = [ // модель для таблицы
{id: 0, name: '0000'},
{id: 1, name: '1111'},
{id: 2, name: '2222'}
];
const table = document.getElementById('table');
const phrase = document.getElementById('search');
const theElement = document.getElementById("none");
function render(table, items) { // отрисовка строк в табл.
table.innerHTML = items.reduce((rows, item) => {
rows += `<tr><td>${item.id}</td><td>${item.name}</td></tr>`;
return rows;
}, '');
}
function search(value) { // поиск в модели
const req = new RegExp(value, 'i');
// здесь укажите поля по которым искать
const items = models.filter(item => req.test(item.name)); // фильтр по модели,
render(table, items); // рисуем табл для отфильтрованных элементов модели
theElement.innerHTML = items.length === 0 ? "По вашему запросу не найдено ни одного магазина." : ""; // сообщение
}
phrase.addEventListener('change', e => search(e.target.value)); // при изменении строки поиска
render(table, models); // начальная отрисовка табл.