javascript - contentEditable div 中的复选框列表

标签 javascript jquery html css checkbox

我想创建一个简单的所见即所得,我想要的选项之一是添加一个复选框列表,很像一个无序列表,但在每个元素的开头都有复选​​框。

我的主要想法是使用 javascript document.execCommand 编辑带有 contentEditable div 的 WYSIWYG 框,很像这个:http://www.quirksmode.org/dom/execCommand/

但是当我为复选框列表创建一个按钮时,我仍然不知道如何创建一个与 ul 具有相同行为的按钮,通过按 enter 键并在双击输入时停止来生成新按钮。有什么想法吗?

最佳答案

这应该像您所要求的那样工作,尽管可能需要对其进行编辑以反射(reflect)您真正想要对复选框列表执行的操作:

<!DOCTYPE html>
<html>
<head>
  <meta charset="UTF-8" />
  <title>test-page</title>
 <script type="text/javascript">
//<!--

var bxs, clk, dv, lng, tx, spn, und;

function newone()
{ if(bxs == und)  //if undefined do initialization stuff once
  { bxs = [];    //array of checkboxes, accessible any time
    clk = document.getElementById("clk");    //"click" message
    dv = document.getElementById("addmore"); //"div" element
    tx = document.getElementById("txbx");    //"textbox" element
  }
  lng = bxs.length;                 //current number of checkboxes
  spn = document.createElement("span") //create a "span" element
  spn.innerHTML = "&nbsp; &nbsp;";     //indent from left of page
  bxs[lng] = document.createElement("input"); //create checkbox
  bxs[lng].type = "checkbox";
  spn.appendChild(bxs[lng]); //put it inside the "span" element
  dv.insertBefore(spn, tx); //put the "span" element inside the "div"
  tx.value = "";            //ensure textbox has no text
  tx.hidden = false;        //display the textbox
  clk.hidden = true;       //hide the "click" message
  tx.focus();              //let user start typing in the textbox
  return;
}

function tstkey(e)
{ if((e.keyCode == 13) &&     //Enter key pressed?
     (tx.value.length > 2)) //check minimum entry length
  { spn.innerHTML += (tx.value + "<br />"); //finish current line
    newone();  //create another checkbox
  }
  else if((e.keyCode == 27) || //Escape pressed?
          ((e.keyCode == 13) &&       //or
           (tx.value.length == 0))) //blank entry?
  { dv.removeChild(spn);  //remove last-added "span"
    bxs.length = lng; //remove last-added checkbox
    tx.hidden = true; //hide the textbox
    clk.hidden = false; //display the "click" message
  }
  return;
}

 // -->
 </script>
</head>
<body>
<div id="addmore">
<input id="txbx" type="text" size="30" maxlength="50" hidden="hidden" onkeydown="tstkey(event);" /><br />
<span id="clk" onclick="newone();" style="background-color:#C0C0C0;">click to create a new checkbox item</span>
</div>
</body>
</html> 

关于javascript - contentEditable div 中的复选框列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26111259/

相关文章:

jquery - 在包含/排除按钮组之间切换事件类

javascript - Bootstrap 网格中的 Bootstrap 表 - 前 3 个表的间距是正确的,但该表并未占用第 4 个网格元素中的所有空间

javascript - 在 CSS 中悬停时水平扩展图像

javascript - 检查本地文件是否存在(HTML5 FS API)

PHP:验证表单并显示警报

javascript - React 组件没有函数或类?

html - 对齐表格中的元素

javascript - 如何在一页网站上制作 "one scroll"

javascript - 如果输入不存在则插入

javascript - 自定义 HTML5 音频 API : Uncaught TypeError: undefined is not a function