как очистить поле ввода после начала ввода - PullRequest
1 голос
/ 17 марта 2012

Я пытаюсь сделать поле ввода, где поле ввода становится пустым, как только вы начинаете печатать. (Не в фокусе). Я пытался использовать событие keyup на mootools, но поток не является бесшовным. удаление поля ввода занимает некоторое время. вот код

document.addEvent('domready', function(e) {
$('inputBox').addEvent('keyup', function() {
    if(inputBox.value != inputBox.defaultValue){
        inputBox.value = '';
        $('inputBox').removeEvents('keyup');    
    }
});
});

Какой лучший способ сделать это так, чтобы он мог вести себя лучше?

Ответы [ 2 ]

3 голосов
/ 17 марта 2012

Как сказал Ремон, вы можете привязаться к событию нажатия клавиши, и у вас не будет никакой задержки, но тогда вы не сможете выполнить сравнение со значением по умолчанию, так как при нажатии клавиши значение будет таким же (значение изменилось, как только вы получили ключ).

Это будет код с keydown:

document.addEvent('domready', function(e) {
    $('inputBox').addEvent('keydown', function() {
        this.set('value', '').removeEvents('keydown');
    });
});

Если вы хотите сделать сравнение, как вы делали в исходном коде, то выпотребуется использовать keyup, но с небольшой задержкой.

Вот ваш код, немного оптимизированный и работающий:

document.addEvent('domready', function(e) {
    $('inputBox').addEvent('keyup', function(ev) {
        if(this.value != this.defaultValue){
            this.set('value', ev.key).removeEvents('keyup');
        }
    });
});​

Я надеюсь, что это ответ на ваш вопрос:)

1 голос
/ 17 марта 2012

Событие keyup запускается последним из всех ключевых событий, поэтому лучше связать его с событием keydown, что сделает ваш поток более плавным.

...