javascript - 将段落或新元素转换为复选框

标签 javascript jquery html checkbox

我有 contenteditable div 作为文本编辑器

所需的功能是用户在文本编辑器中写入或复制/粘贴的任何内容变成复选框

例如

Case 1

如果用户写了以下内容

测试 1(按下回车键)

测试2(按下回车键)

测试 3(按下回车键)

那么Test1,Test2,Test3应该有3个复选框

Case2

当用户写入时

Parent1(按下回车键)

  • 测试 1(按下回车键)

  • 测试2(按下回车键)

  • 测试 3(按下回车键)

在上面的例子中会有 4 个复选框 parent1 和 3 个 li's

我已经取得了一些成就,但如果更准确的话,我愿意接受新的方式。

$('#checkbox').click(function() {
var $p = "";  
     var re = /\S/;
     $p = $('.outputBox');
      $p.contents()
      .filter(function() {    
        return this.nodeType == 3&& re.test(this.nodeValue);;  
     })
    .wrap('<label> <input type="checkbox" name="field_1" value="on" />')
});

FIDDLE Demo

基本上,新的 span、div、br 标签或 li 标签应该创建到复选框中。

如果有任何不同的方法可以满足创建复选框的要求/基本要求,我们非常欢迎。

最佳答案

这是一个可能的解决方案。我遍历了最里面的文本元素,然后将其转换为复选框。

$('#checkbox').click(function() {
     var $p = "";  
     $p = $('.outputBox');
     wrapText($p);
});

function wrapText(domObj) {
    var re = /\S/;
    domObj.contents().filter(function() {
        if (this.nodeType === 1) {
            wrapText($(this));
        } else {
            return (this.nodeType === 3 && re.test(this.nodeValue));
         }
    })
    .wrap('<label> <input type="checkbox" name="field_1" value="on" /></label>');
}

这是 fiddle : http://jsfiddle.net/wLrfqvss/6/

希望这就是您要找的。

如果您只希望某些元素发生这种情况,您总是可以像这样添加一个检查:

if (this.nodeType === 1 && this.tagName === 'DIV')

在上面的代码中。

关于javascript - 将段落或新元素转换为复选框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30800042/

相关文章:

javascript - 如何访问组件javascript文件中的属性?

jquery - 从 ajax 完成的列表中获取点击的项目

javascript - 几种基础展示模态需要不同的背景

html - 在图像上叠加文本

javascript - Edge 上的 HTML <template>(版本 ≥13)

javascript - 删除 DOM 中的图像时如何防止内存泄漏?

javascript - 如何将信息从 Web 传递到 Perl 脚本中?

javascript - vscode - 用 node_modules 定义替换 typescript 定义

javascript - 有时返回 false 不起作用

javascript - 使用 jquery 加载的页面的 CSS 属性继承性