"editable"
Bootstrap 3.0.0 Snippet by chayapan

<link href="//netdna.bootstrapcdn.com/bootstrap/3.0.0/css/bootstrap.min.css" rel="stylesheet" id="bootstrap-css"> <script src="//netdna.bootstrapcdn.com/bootstrap/3.0.0/js/bootstrap.min.js"></script> <script src="//code.jquery.com/jquery-1.11.1.min.js"></script> <!------ Include the above in your HEAD tag ----------> <!DOCTYPE html><html lang='en' class=''> <head><script src='//production-assets.codepen.io/assets/editor/live/console_runner-079c09a0e3b9ff743e39ee2d5637b9216b3545af0de366d4b9aad9dc87e26bfd.js'></script><script src='//production-assets.codepen.io/assets/editor/live/events_runner-73716630c22bbc8cff4bd0f07b135f00a0bdc5d14629260c3ec49e5606f98fdd.js'></script><script src='//production-assets.codepen.io/assets/editor/live/css_live_reload_init-2c0dc5167d60a5af3ee189d570b1835129687ea2a61bee3513dee3a50c115a77.js'></script><meta charset='UTF-8'><meta name="robots" content="noindex"><link rel="shortcut icon" type="image/x-icon" href="//production-assets.codepen.io/assets/favicon/favicon-8ea04875e70c4b0bb41da869e81236e54394d63638a1ef12fa558a4a835f1164.ico" /><link rel="mask-icon" type="" href="//production-assets.codepen.io/assets/favicon/logo-pin-f2d2b6d2c61838f7e76325261b7195c27224080bc099486ddd6dccb469b8e8e6.svg" color="#111" /><link rel="canonical" href="https://codepen.io/cssmonkey/pen/PzboxV?depth=everything&order=popularity&page=13&q=editable&show_forks=false" /> <link rel='stylesheet prefetch' href='https://cdnjs.cloudflare.com/ajax/libs/normalize/5.0.0/normalize.min.css'> <style class="cp-pen-styles">.wrapper { margin: 20px; } .js-editable-text .editable-text-btn, .js-editable-text .editable-text-string { display: inline-block; vertical-align: middle; } .js-editable-text .editable-text-string[contenteditable] { background-color: #fff; border: 1px solid #ccc; border-radius: 3px; padding: 20px; } .js-editable-text .editable-text-btn { margin: 20px; font-size: 1rem; font-weight: normal; } .js-editable-text .editable-text-save-btn { display: none; } .js-editable-text.is-active .editable-text-save-btn { display: inline-block; } .js-editable-text.is-active .editable-text-edit-btn { display: none; } </style></head><body> <div class="wrapper"> <h1 class="js-editable-text">Editable text</h1> </div> <script src='//production-assets.codepen.io/assets/common/stopExecutionOnTimeout-b2a7b3fe212eaa732349046d8416e00a9dec26eb7fd347590fbced3ab38af52e.js'></script> <script >const delegateEvent = (context, eventName, selector, fn) => { context.addEventListener(eventName, function(event) { const possibleTargets = context.querySelectorAll(selector); const target = event.target; for (var i = 0, l = possibleTargets.length; i < l; i++) {if (window.CP.shouldStopExecution(2)){break;}if (window.CP.shouldStopExecution(2)){break;} let el = target; let p = possibleTargets[i]; while(el && el !== context) {if (window.CP.shouldStopExecution(1)){break;}if (window.CP.shouldStopExecution(1)){break;} if (el === p) { return fn.call(p, event); } el = el.parentNode; } window.CP.exitedLoop(1); window.CP.exitedLoop(1); } window.CP.exitedLoop(2); window.CP.exitedLoop(2); }); }; /** * Make a text element contenteditable * @module editableText */ const editableText = { /** * This function initialises the module * @method init * @returns {boolean} - returns a boolean indicating function success or failure */ init: function() { if (document.querySelectorAll('.js-editable-text').length === 0) { return false; } this.$editableText = document.querySelectorAll('.js-editable-text'); Array.prototype.forEach.call(this.$editableText, (el, i) => { this.addEditBtn(el, i); this.bindEvents(el); }); }, addEditBtn: function(el, i) { const buttonHtml = '<button id="EditableTextEditBtn_' + i + '" class="editable-text-btn editable-text-edit-btn" type="button">Edit</button><button id="EditableTextSaveBtn_' + i + '" class="editable-text-btn editable-text-save-btn" type="button">Save</button>', text = el.textContent; el.innerHTML = '<span class="editable-text-string">' + text + '</span>' + buttonHtml; }, bindEvents: function(el) { delegateEvent(el, 'click', '.editable-text-btn', function(e) { e.preventDefault(); const $editableText = el.querySelector('.editable-text-string'); if($editableText.getAttribute('contenteditable')) { $editableText.removeAttribute('contenteditable'); el.classList.remove('is-active'); } else { $editableText.setAttribute('contenteditable', true); $editableText.focus(); el.classList.add('is-active'); } }); } }; // Initialise the module editableText.init(); //# sourceURL=pen.js </script> </body></html>

Related: See More


Questions / Comments: