You can add a click handler to the button which removes itself after being triggered:
function clickOnceHandler(e) {
// Do something.
alert('Do something then disable the button');
// Disable your button.
e.target.disabled = true;
// Remove this click handler.
e.target.removeEventListener(e.type, clickOnceHandler);
}
const buttons = document.querySelectorAll('button');
for (let i = 0; i < buttons.length; i++) {
buttons[i].addEventListener('click', clickOnceHandler);
}
function clickOnceHandler(e) {
// Do something.
alert('Do something then disable the button');
// Disable your button.
e.target.disabled = true;
// Remove this click handler.
e.target.removeEventListener(e.type, clickOnceHandler);
}
<button type="button">Click Once</button>
<button type="button">Click Once</button>
<button type="button">Click Once</button>