input
и один button
. Дочерняя функция - это оболочка. Каждый раз при ее вызове срабатывает следующее условие: в том случае, если input
'ы не пустые, кнопка включается, иначе - выключается. Только вот что, для полноценной работы нужны еще 2 функции: enbableButton
и disabledButton
.input
'ов можно использовать любые другие элементы, у которых есть свойство value
. size.addEventListener('change', priceRequestHundler);
e
, т. к. в тот момент переменная еще не определена. А еще async/await не используют с then
. + gulp-ttf2woff2@3.0.0
added 73 packages from 67 contributors and audited 438 packages in 14.272s
class Select {
constructor({
selector,
label,
url,
onOpen,
onClose
}) {
this.container = document.querySelector(selector);
this.label = label;
this.url = url;
this._onOpen = onOpen;
this._onClose = onClose;
...
}
...
open() {
...
if (this._onOpen !== undefined) {
this._onOpen();
}
}
close() {
...
if (this._onClose !== undefined) {
this._onClose();
}
}
}
const svg = document.querySelector('#svg');
const item = svg.querySelector('#rect');
const size = svg.getBoundingClientRect();
const viewBox = svg
.getAttribute('viewBox')
.split(/\s+/g)
.map(entry => Number(entry));
const normalize = (min, max, value) => {
return (value - min) / (max - min);
};
const lerp = (min, max, value) => {
return (1 - value) * min + value * max;
};
const map = (minSource, maxSource, minDestination, maxDestination, value) => {
return lerp(minDestination, maxDestination, normalize(minSource, maxSource, value));
};
svg.addEventListener('mousemove', event => {
item.setAttribute(
'cx',
map(0, size.width, viewBox[0], viewBox[2], event.offsetX)
);
item.setAttribute(
'cy',
map(0, size.height, viewBox[1], viewBox[3], event.offsetY)
);
});