Можете ли вы создать несколько функций для одного и того же события onBlur? - PullRequest
0 голосов
/ 03 января 2012

У меня хорошая проверка значения по умолчанию, и клиент хочет добавить дополнительные функции к событию onBlur. проверка по умолчанию является глобальной и работает нормально. новая функциональность требует, чтобы некоторые специфичные для поля значения были переданы новой функции. если бы не это, я бы просто прикрепил его к проверке по умолчанию и все готово.

мой вопрос: могу ли я сделать что-то подобное и заставить их обоих выстрелить? что было бы лучше?

ПРОВЕРКА ПО УМОЛЧАНИЮ

$(document.body).getElements('input[type=text],textarea,tel,email').addEvents ({
    'focus' : function(){
        if (this.get('value') == this.defaultValue)
        {
            this.set('value', '');
        }
    },
    'blur' : function(){
        if (this.get('value') == '')
        {
            this.set('value', (this.defaultValue));
        }
    }
});

ДОБАВЛЕННАЯ ФУНКЦИОНАЛЬНОСТЬ

<input type='text' id='field_01' value='default data' onBlur='driveData(event, variableForThisField, this.value);'>

идея состоит в том, чтобы обрабатывать значения по умолчанию как обычно, но запускать новую функцию при вводе значений поля. Мне кажется, сначала нужно стрелять, но как!?

и, опять же, потому что значения передали специфическое поле , я не могу просто выбросить его в глобальную функцию проверки по умолчанию.

надеюсь, что это имеет смысл.

WR!

Ответы [ 2 ]

1 голос
/ 03 января 2012

Просто сохраните пользовательскую переменную в атрибуте пользовательских данных . Технически не соответствует стандартам [в HTML 4], но работает:

<input type='text' id='field_01' value='default data' data-customvar="variableForThisField">

$(document.body).getElements('input[type=text],textarea,tel,email').addEvents ({
    'focus' : function(){
        if (this.get('value') == this.defaultValue)
        {
            this.set('value', '');
        }
    },
    'blur' : function(){
        if (this.get('value') == '')
        {
            this.set('value', (this.defaultValue));
        } else {
            driveData(this.get('value'), this.get('data-customvar'));
        }
    }
});

скрипка: http://jsfiddle.net/QkcxP/6/

0 голосов
/ 03 января 2012

Я думаю, что вы используете Mootools?Я не совсем распознаю синтаксис, но я создал JSFiddle, и он, похоже, работает с Mootools, а не с другими библиотеками.

Вот скрипта, которую я создал для его проверки: http://jsfiddle.net/NDTsz/

Ответ будет да - конечно, в Chrome, но я верю в каждый браузер.

...