返回

用DIV实现input、textarea 输入框(解决火狐回车换行问题)

前端

用DIV实现input、textarea输入框

前言

在做文本编辑器时,系统自带的 textarea 在 火狐 浏览器中回车不会进行换行,被显示成了空格,找了好几种方案没解决,试了下 div 实现 input、textarea 的方式。

实现步骤

  1. 创建一个div元素,并为其设置样式,使其看起来像一个输入框。
  2. 在div元素内创建一个contenteditable属性,使其可以编辑。
  3. 使用javascript代码来监听div元素的键盘事件,并在回车时触发换行。
  4. 使用javascript代码来监听div元素的输入事件,并在输入内容时更新div元素的innerHTML属性。

示例代码

<!DOCTYPE html>
<html>
<head>

<style>
.input-div {
  width: 300px;
  height: 20px;
  border: 1px solid #ccc;
  padding: 5px;
}
</style>
</head>
<body>
<div class="input-div" contenteditable="true"></div>

<script>
// 监听div元素的键盘事件
var inputDiv = document.querySelector('.input-div');
inputDiv.addEventListener('keydown', function(e) {
  // 如果是回车键,则触发换行
  if (e.keyCode === 13) {
    e.preventDefault();
    inputDiv.innerHTML += '<br>';
  }
});

// 监听div元素的输入事件
inputDiv.addEventListener('input', function() {
  // 更新div元素的innerHTML属性
  inputDiv.innerHTML = inputDiv.innerHTML;
});
</script>
</body>
</html>

优点

使用div实现input、textarea输入框具有以下优点:

  • 可以解决火狐浏览器中回车不会换行的问题。
  • 可以使用javascript代码来控制输入框的各种行为,如输入内容的过滤、限制等。
  • 可以使用CSS样式来定制输入框的外观,使其与网站的整体风格保持一致。

缺点

使用div实现input、textarea输入框也存在一些缺点:

  • 实现起来比使用系统自带的input、textarea元素更复杂。
  • 需要使用javascript代码来监听输入框的事件,这可能会降低页面的性能。
  • 在某些情况下,使用div实现的输入框可能无法与其他元素正确交互。

总结

总的来说,使用div实现input、textarea输入框是一种可行的解决方案,可以解决火狐浏览器中回车不会换行的问题。但是,在使用时也需要注意其缺点,并权衡利弊。