近期在使用thinkphp+layui+codemirror开发的时候,发现一直获取不到textarea的值。百度后发现是codemirror的一个坑。
codeMirror先从 textarea中读取值放到codemirror动态生成的div中,根据textarea中的换行个数确定行数,根据正则表达来高亮语法。这就有个问 题,当你在页面上对语法做出修改提交表单时,其实只是在codemirror上的动态div上做出修改,当form表单提交时,原来textarea值并没有变化。
<textarea id="code" name="code">{$code}</textarea> <script> layui.use(['form', 'layer','layedit'], function () { var form = layui.form, layer = layui.layer, $= layui.jquery; var editor = CodeMirror.fromTextArea(document.getElementById("code"), { mode: "application/xml", styleActiveLine: true, lineNumbers: true, lineWrapping: true }); form.on('submit(submit)', function (data) { var loading = layer.load(1, {shade: [0.1, '#fff']}); var content = editor.getValue();//此处获取code的值 $.post("", {content:content}, function (res) { layer.close(loading); if (res.code > 0) { layer.msg(res.msg, {time: 1800, icon: 1}, function () { location.href = res.url; }); } else { layer.msg(res.msg, {time: 1800, icon: 2}); } }); }); }); </script>
本文属原创,转载请注明原文:https://zhimatong.com/jiaocheng/705.html
为保证教程的实用性及扩大知识面覆盖,如果您有相似问题而未解决,可联系在线客服免费技术支持。