diff --git a/src/editable-form/editable-form-utils.js b/src/editable-form/editable-form-utils.js
index 3e2eaa6..4d8169d 100644
--- a/src/editable-form/editable-form-utils.js
+++ b/src/editable-form/editable-form-utils.js
@@ -2,104 +2,120 @@
* EditableForm utilites
*/
(function ($) {
- $.extend($.fn.editableform, {
- utils: {
- /**
- * classic JS inheritance function
- */
- inherit: function (Child, Parent) {
- var F = function() { };
- F.prototype = Parent.prototype;
- Child.prototype = new F();
- Child.prototype.constructor = Child;
- Child.superclass = Parent.prototype;
- },
+ $.fn.editableform.utils = {
+ /**
+ * classic JS inheritance function
+ */
+ inherit: function (Child, Parent) {
+ var F = function() { };
+ F.prototype = Parent.prototype;
+ Child.prototype = new F();
+ Child.prototype.constructor = Child;
+ Child.superclass = Parent.prototype;
+ },
- /**
- * set caret position in input
- * see http://stackoverflow.com/questions/499126/jquery-set-cursor-position-in-text-area
- */
- setCursorPosition: function(elem, pos) {
- if (elem.setSelectionRange) {
- elem.setSelectionRange(pos, pos);
- } else if (elem.createTextRange) {
- var range = elem.createTextRange();
- range.collapse(true);
- range.moveEnd('character', pos);
- range.moveStart('character', pos);
- range.select();
- }
- },
+ /**
+ * set caret position in input
+ * see http://stackoverflow.com/questions/499126/jquery-set-cursor-position-in-text-area
+ */
+ setCursorPosition: function(elem, pos) {
+ if (elem.setSelectionRange) {
+ elem.setSelectionRange(pos, pos);
+ } else if (elem.createTextRange) {
+ var range = elem.createTextRange();
+ range.collapse(true);
+ range.moveEnd('character', pos);
+ range.moveStart('character', pos);
+ range.select();
+ }
+ },
- /**
- * function to parse JSON in *single* quotes. (jquery automatically parse only double quotes)
- * That allows such code as:
- * safe = true --> means no exception will be thrown
- * for details see http://stackoverflow.com/questions/7410348/how-to-set-json-format-to-html5-data-attributes-in-the-jquery
- */
- tryParseJson: function(s, safe) {
- if (typeof s === 'string' && s.length && s.match(/^[\{\[].*[\}\]]$/)) {
- if (safe) {
- try {
- /*jslint evil: true*/
- s = (new Function('return ' + s))();
- /*jslint evil: false*/
- } catch (e) {} finally {
- return s;
- }
- } else {
+ /**
+ * function to parse JSON in *single* quotes. (jquery automatically parse only double quotes)
+ * That allows such code as:
+ * safe = true --> means no exception will be thrown
+ * for details see http://stackoverflow.com/questions/7410348/how-to-set-json-format-to-html5-data-attributes-in-the-jquery
+ */
+ tryParseJson: function(s, safe) {
+ if (typeof s === 'string' && s.length && s.match(/^[\{\[].*[\}\]]$/)) {
+ if (safe) {
+ try {
/*jslint evil: true*/
s = (new Function('return ' + s))();
/*jslint evil: false*/
+ } catch (e) {} finally {
+ return s;
}
+ } else {
+ /*jslint evil: true*/
+ s = (new Function('return ' + s))();
+ /*jslint evil: false*/
}
- return s;
- },
+ }
+ return s;
+ },
- /**
- * slice object by specified keys
- */
- sliceObj: function(obj, keys, caseSensitive /* default: false */) {
- var key, keyLower, newObj = {};
-
- if (!$.isArray(keys) || !keys.length) {
- return newObj;
- }
-
- for (var i = 0; i < keys.length; i++) {
- key = keys[i];
- if (obj.hasOwnProperty(key)) {
- newObj[key] = obj[key];
- }
-
- if(caseSensitive === true) {
- continue;
- }
-
- //when getting data-* attributes via $.data() it's converted to lowercase.
- //details: http://stackoverflow.com/questions/7602565/using-data-attributes-with-jquery
- //workaround is code below.
- keyLower = key.toLowerCase();
- if (obj.hasOwnProperty(keyLower)) {
- newObj[key] = obj[keyLower];
- }
- }
+ /**
+ * slice object by specified keys
+ */
+ sliceObj: function(obj, keys, caseSensitive /* default: false */) {
+ var key, keyLower, newObj = {};
+ if (!$.isArray(keys) || !keys.length) {
return newObj;
- },
-
- /**
- * exclude complex objects from $.data() before pass to config
- */
- getConfigData: function($element) {
- var data = {};
- $.each($element.data(), function(k, v) {
- if(typeof v !== 'object' || (v && typeof v === 'object' && v.constructor === Object)) {
- data[k] = v;
- }
- });
- return data;
- }
- }
- });
+ }
+
+ for (var i = 0; i < keys.length; i++) {
+ key = keys[i];
+ if (obj.hasOwnProperty(key)) {
+ newObj[key] = obj[key];
+ }
+
+ if(caseSensitive === true) {
+ continue;
+ }
+
+ //when getting data-* attributes via $.data() it's converted to lowercase.
+ //details: http://stackoverflow.com/questions/7602565/using-data-attributes-with-jquery
+ //workaround is code below.
+ keyLower = key.toLowerCase();
+ if (obj.hasOwnProperty(keyLower)) {
+ newObj[key] = obj[keyLower];
+ }
+ }
+
+ return newObj;
+ },
+
+ /**
+ * exclude complex objects from $.data() before pass to config
+ */
+ getConfigData: function($element) {
+ var data = {};
+ $.each($element.data(), function(k, v) {
+ if(typeof v !== 'object' || (v && typeof v === 'object' && v.constructor === Object)) {
+ data[k] = v;
+ }
+ });
+ return data;
+ },
+
+ objectKeys: function(o) {
+ if (Object.keys) {
+ return Object.keys(o);
+ } else {
+ if (o !== Object(o)) {
+ throw new TypeError('Object.keys called on a non-object');
+ }
+ var k=[], p;
+ for (p in o) {
+ if (Object.prototype.hasOwnProperty.call(o,p)) {
+ k.push(p);
+ }
+ }
+ return k;
+ }
+
+ }
+ };
}(window.jQuery));
\ No newline at end of file
diff --git a/src/inputs/select.js b/src/inputs/select.js
index 89b4265..9497ae1 100644
--- a/src/inputs/select.js
+++ b/src/inputs/select.js
@@ -1,5 +1,5 @@
/**
-Select (dropdown) input
+Select (dropdown)
@class select
@extends list