Вы можете отслеживать, генерируется ли значение с атрибутом data
(например: <input ... data-generated="1" />
)
При генерировании вы можете установить входное значение на disabled
, чтобы пользователь не мог изменить значение (Например: <input ... disabled />
)
, поэтому сгенерированное состояние для входа будет выглядеть следующим образом:
<input type="text" id="email-field" name="email"
value="987239478@dummyaddress.com" data-generated="1" disabled>
повторное нажатие кнопки вернет вход на
<input type="text" id="email-field" name="email" value="">
jsfiddle
$('#random-hold').on('click','.generate-random', () => {
let email = $('#email-field');
if (email.data('generated') === '1') {
email.val('');
email.removeData('generated');
email.removeAttr('disabled');
} else {
email.val(Math.floor(Math.random() * 1000000000) + "@dummyaddress.com");
email.data('generated', '1');
email.attr('disabled', 'disabled');
}
});
В качестве альтернативы, вы можете рассмотреть возможность сделать все это без jQuery , используя ванильный Javascript / ES6.
document.querySelector('.generate-random').addEventListener('click', () => {
let email = document.myForm.email;
if (email.getAttribute('data-generated') === '1') {
email.value = '';
email.removeAttribute('data-generated');
email.removeAttribute('disabled');
} else {
email.value = Math.floor(Math.random() * 1000000000) + "@dummyaddress.com";
email.setAttribute('data-generated', '1');
email.setAttribute('disabled', 'disabled');
}
});