как очистить поле ввода после начала ввода

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

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

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


person Shekhar    schedule 17.03.2012    source источник
comment
github.com/DimitarChristoff/mooPlaceholder- современные браузеры html5 имеют атрибут placeholder=. этот плагин, который я написал, улучшает те, которые этого не делают, и делает эту функцию доступной для каждого браузера.   -  person Dimitar Christoff    schedule 17.03.2012


Ответы (2)


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

Это будет код с нажатием клавиши:

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');
        }
    });
});​

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

person ajimix    schedule 17.03.2012

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

person Remon Oldenbeuving    schedule 17.03.2012