javascript - 输入可以限制为html <textarea>吗?

标签 javascript html

<分区>

Possible Duplicate:
What is the best way to emulate an HTML input “maxlength” attribute on an HTML textarea?

我的问题是可以 <textarea >配置为只接受一定数量的字符?我可以在以下 JavaScript 中执行此操作,但我为其设计此页面的人不想要状态字段。

我目前的做事方式是我有一个 <textarea >这是一个表单的一部分,该表单使用一个漂亮的 JavaScript 函数在状态框中填充消息。

我还阅读了 SO 并发现警报和声音确实不是提醒人们的方式,因此以下代码会在出现错误时更改背景颜色(并在适当的时候恢复)。

这是代码:

// Checks Form element TransDesc for overruns past 255 characters.
function warnOverDescLen()
{
  var misc_text  = 
  document.forms["InvGenPayTickets"]["TransDesc"].value;
  var alert_text = 
  "You cannot enter more than 255 characters. Please remove some information.";

  var rc = true;

  if(255 < misc_text.length)
  {
    document.forms["InvGenPayTickets"]["trans_status"].value 
      = alert_text;

    misc_text = misc_text.substring(0, 253);

    document.forms["InvGenPayTickets"]["TransDesc"].value 
      = misc_text;

    document.forms["InvGenPayTickets"]["trans_status"].style.backgroundColor 
      = "pink";
  }
  else
  {
    document.forms["InvGenPayTickets"]["trans_status"].value 
      = "";
    document.forms["InvGenPayTickets"]["trans_status"].style.backgroundColor 
      = "lightgoldenrodyellow";
  }

  return rc;
}

<textarea rows="4" cols="60" name="TransDesc" id="TransDesc" 
onkeypress="return warnOverDescLen();" ></textarea>

<span style="color: #50081E; font-weight: bold">Status</span>
<br />
<input type=text name="trans_status" id="trans_status" maxwidth="50"
size="65" />

最佳答案

这是 HTML5 的解决方案,不受 IE9 或更早版本的支持(根据 this ):

<textarea maxlength="255"></textarea>

由于您可能无法放弃对 IE9(甚至可能是 IE8)的支持,因此建议您将其与 JavaScript 结合使用,以防止 keydownpaste 的默认行为> textarea 上的事件,如 standup75 所建议的那样。

下面是如何使用纯 JavaScript 来做到这一点:

<textarea id="txtarea" maxlength="255"></textarea>
<script>
var field = document.getElementById('txtarea');
if(field.addEventListener) {
    field.addEventListener('keydown', enforceMaxlength);
    field.addEventListener('paste', enforceMaxlength);
} else {
    // IE6-8
    field.attachEvent('onkeydown', enforceMaxlength);
    field.attachEvent('onpaste', enforceMaxlength);
}

function enforceMaxlength(evt) {
   var maxLength = 255;
    if(this.value.length >= maxLength) {
        evt.preventDefault()
    }
}
</script>

http://jsfiddle.net/snJwn/

关于javascript - 输入可以限制为html &lt;textarea&gt;吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12568780/

相关文章:

javascript - 如何在下载前强行打开文件浏览器保存文件?

javascript - a.href 属性是否总是作为绝对值返回?

javascript - OpenLayers 以米为单位绘制实际宽度的 LineString

html - div 与 css 背景的水平对齐

jquery - Bootstrap DIV 在 JQuery 中滑动

javascript - 如何实现FabricJS Canvas 视口(viewport)的移动?

javascript - 使用 jQuery UI sortable 时边距消失

html - 主页上的背景图像拉伸(stretch)

javascript - 在模型图像下方添加文本框

javascript - HTML 表格循环遍历每一行