Javascript 可编辑多行问卷

Javascript 可编辑多行问卷,javascript,html,epub,Javascript,Html,Epub,我想为类似问卷的表单创建一个多行字段,类似于您在交互式PDF文档中看到的表单 输入字段必须横跨整个宽度,并在行尾或至少在固定字符数之后换行。 标题不一定必须在同一行: Please introduce yourself: _____________________________ ________________________________________________________ 请自我介绍:_____________________________ ________________

我想为类似问卷的表单创建一个多行字段,类似于您在交互式PDF文档中看到的表单

输入字段必须横跨整个宽度,并在行尾或至少在固定字符数之后换行。 标题不一定必须在同一行:

Please introduce yourself: _____________________________ ________________________________________________________ 请自我介绍:_____________________________ ________________________________________________________ 我尝试了几件事来实现这一点:

  • 对我不起作用,因为
    边框底部:
    仅适用于最后一行和
    文本装饰:下划线不覆盖空白区域
  • 然后,我在彼此下方创建了多个
    ,并使用javascript事件包装文本。这适用于简单的文本输入,但在选择文本、在文本之间插入文本等方面失败。这太复杂了,因为它应该支持尽可能多的电子书设备,所以可能无法在测试阶段生存下来

我想在ePUB书中使用这一点,但请随意发布有关web浏览器行为的答案。但是我不想使用JQuery。

要覆盖未知的行高,可以使用JavaScript通过添加一行文本来确定行高并测量高度差。 在第二步中,当
height
包含可编辑区域内的线条高度时,您可以动态生成背景图像:

var svg = "<svg xmlns='http://www.w3.org/2000/svg' width='1' height='" + height + "'><line x1='0' y1='" + height + "' x2='1' y2='" + height + "' stroke='black' stroke-width='1px'/></svg>";
your_element.setAttribute('style','background-image: url("data:image/svg+xml;utf8,' + svg + '")}');
var svg=”“;
您的_element.setAttribute('style','background-image:url(“data:image/svg+xml;utf8',+svg+”)});
这将创建一个svg图像,这可能是一个兼容性问题。如果您需要广泛的跨浏览器支持,还可以:

  • 只需存储具有所有可能高度的图像
  • 动态创建gif/png并使用base64对其进行编码

在我的例子中,它只需要在iPad应用程序iBook中工作就可以阅读*.ePUB书籍。

要覆盖未知的行高,可以使用JavaScript通过添加一行文本来确定行高,并测量高度差。 在第二步中,当
height
包含可编辑区域内的线条高度时,您可以动态生成背景图像:

var svg = "<svg xmlns='http://www.w3.org/2000/svg' width='1' height='" + height + "'><line x1='0' y1='" + height + "' x2='1' y2='" + height + "' stroke='black' stroke-width='1px'/></svg>";
your_element.setAttribute('style','background-image: url("data:image/svg+xml;utf8,' + svg + '")}');
var svg=”“;
您的_element.setAttribute('style','background-image:url(“data:image/svg+xml;utf8',+svg+”)});
这将创建一个svg图像,这可能是一个兼容性问题。如果您需要广泛的跨浏览器支持,还可以:

  • 只需存储具有所有可能高度的图像
  • 动态创建gif/png并使用base64对其进行编码

在我的例子中,它只需要在iPad应用程序iBook中工作就可以阅读*.ePUB书籍。

使用重复背景来获取行。这有帮助吗?使用重复背景来获取行。这有帮助吗?