You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
70 lines
1.9 KiB
70 lines
1.9 KiB
/** |
|
* editable_selects.js |
|
* |
|
* Copyright 2009, Moxiecode Systems AB |
|
* Released under LGPL License. |
|
* |
|
* License: http://tinymce.moxiecode.com/license |
|
* Contributing: http://tinymce.moxiecode.com/contributing |
|
*/ |
|
|
|
var TinyMCE_EditableSelects = { |
|
editSelectElm : null, |
|
|
|
init : function() { |
|
var nl = document.getElementsByTagName("select"), i, d = document, o; |
|
|
|
for (i=0; i<nl.length; i++) { |
|
if (nl[i].className.indexOf('mceEditableSelect') != -1) { |
|
o = new Option('(value)', '__mce_add_custom__'); |
|
|
|
o.className = 'mceAddSelectValue'; |
|
|
|
nl[i].options[nl[i].options.length] = o; |
|
nl[i].onchange = TinyMCE_EditableSelects.onChangeEditableSelect; |
|
} |
|
} |
|
}, |
|
|
|
onChangeEditableSelect : function(e) { |
|
var d = document, ne, se = window.event ? window.event.srcElement : e.target; |
|
|
|
if (se.options[se.selectedIndex].value == '__mce_add_custom__') { |
|
ne = d.createElement("input"); |
|
ne.id = se.id + "_custom"; |
|
ne.name = se.name + "_custom"; |
|
ne.type = "text"; |
|
|
|
ne.style.width = se.offsetWidth + 'px'; |
|
se.parentNode.insertBefore(ne, se); |
|
se.style.display = 'none'; |
|
ne.focus(); |
|
ne.onblur = TinyMCE_EditableSelects.onBlurEditableSelectInput; |
|
ne.onkeydown = TinyMCE_EditableSelects.onKeyDown; |
|
TinyMCE_EditableSelects.editSelectElm = se; |
|
} |
|
}, |
|
|
|
onBlurEditableSelectInput : function() { |
|
var se = TinyMCE_EditableSelects.editSelectElm; |
|
|
|
if (se) { |
|
if (se.previousSibling.value != '') { |
|
addSelectValue(document.forms[0], se.id, se.previousSibling.value, se.previousSibling.value); |
|
selectByValue(document.forms[0], se.id, se.previousSibling.value); |
|
} else |
|
selectByValue(document.forms[0], se.id, ''); |
|
|
|
se.style.display = 'inline'; |
|
se.parentNode.removeChild(se.previousSibling); |
|
TinyMCE_EditableSelects.editSelectElm = null; |
|
} |
|
}, |
|
|
|
onKeyDown : function(e) { |
|
e = e || window.event; |
|
|
|
if (e.keyCode == 13) |
|
TinyMCE_EditableSelects.onBlurEditableSelectInput(); |
|
} |
|
};
|
|
|