你能在同一个onBlur事件上创建多个函数吗?

时间:2012-01-03 00:03:17

标签: javascript javascript-events mootools

我有一个很好的默认值检查,客户希望为onBlur事件添加其他功能。默认值检查是全局的,并且工作正常。新功能需要将一些特定于字段的值传递给新功能。如果不是这样的话,我只需将其固定在默认检查上即可完成。

我的问题是,我可以做这种事情,让他们两个火吗?什么是更好的方式?

THE DEFAULT-CHECK

$(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 个答案:

答案 0 :(得分:1)

只需将自定义变量存储在custom data attribute中即可。在技​​术上不符合标准[在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/

答案 1 :(得分:0)

我认为你在使用Mootools?我不太清楚语法,但是我创建了一个JSFiddle,它似乎与Mootools一起使用,而不是其他库。

这是我为测试而创建的小提琴:http://jsfiddle.net/NDTsz/

答案似乎 - 当然在Chrome中,但我相信每个浏览器。