Использование Javascript, чтобы сделать поле ввода редактируемым ровно через 3 секунды после ввода пользователя

Мне нужна функция для выполнения, когда пользователь вводит что-то в поле ввода. Функция должна сделать поле ввода недоступным для редактирования в течение 3 секунд, прежде чем снова сделать поле ввода редактируемым. У меня есть функция ниже, но она не работает вообще. Мне интересно, что я сделал не так и как это исправить?

function makeUnedit (id) {

setTimeout(function(){ document.getElementById(id).readOnly = false; }, 3000);

success:function(setTimeout) {
document.getElementById(id).readOnly = true;
}

}

Редактировать:

Это работает, но если вы вводите спам в поле ввода, как если бы вы вводили 1 вход в 100 миллисекунд или около того, он будет переопределять его, делая readOnly true все время, если вы продолжаете рассылать спам с такой скоростью.

document.getElementById(id).readOnly = true;
setTimeout(function(){ document.getElementById(id).readOnly = false; }, 1500);

0

Решение

Это будет работать:

function makeUnedit (id) {

document.getElementById(id).readOnly = true;

setTimeout(function(){
document.getElementById(id).readOnly = false;
}, 3000);

}

Обратите внимание, что функция, которую вы передаете в качестве аргумента setTimeout(argument, milliseconds) будет вызван через x миллисекунд.

success: это бессмысленный параметр здесь и должен был вызвать синтаксическую ошибку.

1

Другие решения

window.onload = function() {
function makeUnedit (id) {
document.getElementById(id).readonly = true;
window.setTimeout(function() {
document.getElementById(id).readonly = false;
}, 3000);
}

document.getElementById("id").onfocus = function() { makeUnedit ("id") };
};
<input type="text" id="id"/>

По моим расчетам, вы используете неправильное ключевое слово. Так как в любом случае нет необходимости в таком утверждении, вот решение.

function makeUnedit (id) {
document.getElementById(id).readonly = true;
window.setTimeout(function() {
document.getElementById(id).readonly = false;
}, 3000);
}

Добавьте код ниже для вашего обработчика:

document.getElementById(id).onfocus = function() { makeUnedit(id) };
0

По вопросам рекламы [email protected]