来自未来穴居人的问候,
我正在尝试构建一个简单的wysiwyg,不幸的是我无法使用默认情况下使用段落而不是简单的换行符。然后我读到了这个:
Force browser to insert <p> tag when pressing Enter in a designMode IFrame
这个问题是在一年多前提出来的。通过链接,我看到webkit中的一些内容已经“解决”:https://bugs.webkit.org/show_bug.cgi?id=59961已解决:http://trac.webkit.org/changeset/109529
对不起,我没有达到速度,但这是什么意思:它是否已经解决,是否有办法在不进入JS和监控击键的情况下做到这一点?
如果没有,那么JS的解决方案是什么?监视“输入”,然后如何将选择包装在段落标记中?到目前为止,我尝试了这个,但它不起作用
$("#richTextField").keydown(function(e) {
alert("you pressed something");
if (e.keyCode == 13) {
alert("you pressed ENTER");
richTextField.document.execCommand('formatblock',false,"P");
}
});
根本不起作用 - 甚至不会抛出警报。
只是为了澄清......我想:
This is my first paragraph
<br>
This is my second paragraph
<br>
现在正在发生什么,成为一个正常的
<p>This is my first paragraph</p>
<p>This is my second paragraph</p>
谢谢
答案 0 :(得分:2)
其实我用JS来解决它。虽然下面的方法很简单,但它确实会导致复杂化,例如将段落标记插入列表项和大量换行符......我想你可以稍后在php中删除它。以下是任何需要它的人的代码:
$("#richTextField").contents().keydown(function(e) {
if (e.keyCode === 13) {
richTextField.document.execCommand('formatblock',false,"P");
}
});
或者你可以这样做,这在我看来更好用,因为上面的代码如果写了一些内容但没有点击输入,你根本就没有段落标记。
$("#richTextField").contents().keydown(function(e) {
richTextField.document.execCommand('formatblock',false,"P");
});
我能找到的唯一办法。如果有人知道另一个没有进入javascript并监控'enter'键,请发布。