implemented onfocus event for input-widgets, tested with textbox and taglist, others more complex input-widgets probably need to proxy the event

This commit is contained in:
Ralf Becker 2013-10-09 09:05:30 +00:00
parent 473da1949d
commit 3c0743cb97
2 changed files with 34 additions and 0 deletions

View File

@ -39,6 +39,11 @@ var et2_inputWidget = et2_valueWidget.extend([et2_IInput,et2_ISubmitListener],
"type": "string",
"description": "JS code which is executed when the value changes."
},
"onfocus": {
"name": "onfocus",
"type": "string",
"description": "JS code which get executed when wiget receives focus."
},
"validation_error": {
"name": "Validation Error",
"type": "string",
@ -70,6 +75,7 @@ var et2_inputWidget = et2_valueWidget.extend([et2_IInput,et2_ISubmitListener],
if (node)
{
$j(node).unbind("change.et2_inputWidget");
$j(node).unbind("focus");
}
this._super.apply(this, arguments);
@ -101,6 +107,9 @@ var et2_inputWidget = et2_valueWidget.extend([et2_IInput,et2_ISubmitListener],
$j(node).bind("change.et2_inputWidget", this, function(e) {
e.data.change.call(e.data, this);
});
$j(node).bind("focus", this, function(e) {
e.data.focus.call(e.data, this);
});
}
this._super.apply(this,arguments);
@ -139,6 +148,25 @@ var et2_inputWidget = et2_valueWidget.extend([et2_IInput,et2_ISubmitListener],
return valid;
},
focus: function(_node)
{
if (this.options.onfocus)
{
if(typeof this.options.onfocus == 'function')
{
// Make sure function gets a reference to the widget
var args = Array.prototype.slice.call(arguments);
if(args.indexOf(this) == -1) args.push(this);
return this.options.onfocus.apply(this, args);
}
else
{
return (et2_compileLegacyJS(this.options.onfocus, this, _node))();
}
}
},
set_value: function(_value) {
var node = this.getInputNode();

View File

@ -187,6 +187,12 @@ var et2_taglist = et2_selectbox.extend(
this.click(event.target, $j(event.target).parent().data("json"));
},this));
}
// onFocus
if (this.options.onfocus)
{
$j(this.taglist).on("focus", jQuery.proxy(this.focus,this));
}
return true;
},