1
+ − 1
/**
+ − 2
* $Id: editable_selects.js 162 2007-01-03 16:16:52Z spocke $
+ − 3
*
+ − 4
* Makes select boxes editable.
+ − 5
*
+ − 6
* @author Moxiecode
+ − 7
* @copyright Copyright © 2004-2007, Moxiecode Systems AB, All rights reserved.
+ − 8
*/
+ − 9
+ − 10
var TinyMCE_EditableSelects = {
+ − 11
editSelectElm : null,
+ − 12
+ − 13
init : function() {
+ − 14
var nl = document.getElementsByTagName("select"), i, d = document, o;
+ − 15
+ − 16
for (i=0; i<nl.length; i++) {
+ − 17
if (nl[i].className.indexOf('mceEditableSelect') != -1) {
+ − 18
o = new Option('(value)', '__mce_add_custom__');
+ − 19
+ − 20
o.className = 'mceAddSelectValue';
+ − 21
+ − 22
nl[i].options[nl[i].options.length] = o;
+ − 23
nl[i].setAttribute('onchange', 'TinyMCE_EditableSelects.onChangeEditableSelect(this);');
+ − 24
}
+ − 25
}
+ − 26
},
+ − 27
+ − 28
onChangeEditableSelect : function(se) {
+ − 29
var d = document, ne;
+ − 30
+ − 31
if (se.options[se.selectedIndex].value == '__mce_add_custom__') {
+ − 32
ne = d.createElement("input");
+ − 33
ne.id = se.id + "_custom";
+ − 34
ne.name = se.name + "_custom";
+ − 35
ne.type = "text";
+ − 36
+ − 37
ne.style.width = se.clientWidth;
+ − 38
se.parentNode.insertBefore(ne, se);
+ − 39
se.style.display = 'none';
+ − 40
ne.focus();
+ − 41
ne.onblur = TinyMCE_EditableSelects.onBlurEditableSelectInput;
+ − 42
TinyMCE_EditableSelects.editSelectElm = se;
+ − 43
}
+ − 44
},
+ − 45
+ − 46
onBlurEditableSelectInput : function() {
+ − 47
var se = TinyMCE_EditableSelects.editSelectElm;
+ − 48
+ − 49
if (se) {
+ − 50
if (se.previousSibling.value != '') {
+ − 51
addSelectValue(document.forms[0], se.id, se.previousSibling.value, se.previousSibling.value);
+ − 52
selectByValue(document.forms[0], se.id, se.previousSibling.value);
+ − 53
} else
+ − 54
selectByValue(document.forms[0], se.id, '');
+ − 55
+ − 56
se.style.display = 'inline';
+ − 57
se.parentNode.removeChild(se.previousSibling);
+ − 58
TinyMCE_EditableSelects.editSelectElm = null;
+ − 59
}
+ − 60
}
+ − 61
};