JS如何获取用户输入的回车、空格等特殊字符?

sunshine_99 2009-12-31 04:17:27
做一个站内信的功能,发件人发信时是什么格式,那么收件人收信也是那样的格式

内容是一个textarea标签,id为mailContent,代码全写在一个.js文件里

如果用户输入内容如下:
=========================
你好:
很高兴认识你。

=========================

那么我document.getElementById("mailContent").innerText后,得到的应该是这样一段字符串:

你好:</br>  很高兴认识你。</br>

我给这个textarea加了一个onkeyup事件,每次调用都掉testPress方法,代码如下


mail.prototype.testPress = function(event){
var str = document.getElementById("mailContent").innerText;
event = event || window.event;
if(event.keyCode == 13){
this.content = str + '</br>';
}else{

this.content = str;
}
}


但是这样写的话,最后this.content的值为 :你好:很高兴认识你。</br>

因为最后一个按下的是回车键,所以才会加上,前面虽然按下了,但是var str = document.getElementById("mailContent").innerText; 时,没有拿到回车,只获取到文本了,所以实现不了我想要的功能

是不是用char(10)也可以?


var content = document.getElementById("mailContent").innerHTML;
var a = content.replace(/char(10)/,'</br>');


可是这样不行啊~

请问大家有什么好办法?

...全文
2051 13 打赏 收藏 举报
写回复
13 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
浪尖赏花 2009-12-31
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 sunshine_99 的回复:]
JScript codevar content= document.getElementById('mailContent').value;var str1= content.replace(/\r\n/g,"</br>");
str1= content.replace(//g," ");alert(str1);

这么写的话,它只会替换空格,回车不管用

JScript codevar content= document.getElementById('mailContent').value;var str1= content.replace(/\r\n/g,"</br>");
alert(str1);var str2= content.replace(//g," ");alert(str2);

分开写的话就没事了,str1替换回车,str2替换空格

可是写一起怎么就只替换空格呢??
[/Quote]
var content= document.getElementById('mailContent').value;
content= content.replace(/\r\n/g,"</br>");
content= content.replace(//g," ");
alert(content);
li_maoqi 2009-12-31
  • 打赏
  • 举报
回复
今天刚看到一个键盘记录的例子,不知道对lz有没有帮助。比较菜,直贴源码了

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD><TITLE>js 按键记录</TITLE>
<META NAME="Generator" CONTENT="EditPlus">
<META NAME="Author" CONTENT="羽殇仁">
<META NAME="Keywords" CONTENT="js 按键记录">
<META NAME="Description" CONTENT="js 按键 记录">
</HEAD>
<BODY>
<script type="text/javascript">
var keystring = "";//记录按键的字符串
function $(s){return document.getElementById(s)?document.getElementById(s):s;}
function keypress(e)
{
  var currKey=0,CapsLock=0,e=e||event;
  currKey=e.keyCode||e.which||e.charCode;
  CapsLock=currKey>=65&&currKey<=90;
  switch(currKey)
  {
    //屏蔽了退格、制表、回车、空格、方向键、删除键
    case 8: case 9:case 13:case 32:case 37:case 38:case 39:case 40:case 46:keyName = "";break;
    default:keyName = String.fromCharCode(currKey); break;
  }
  keystring += keyName;
}
function keydown(e)
{
  var e=e||event;
  var currKey=e.keyCode||e.which||e.charCode;
  if((currKey>7&&currKey<14)||(currKey>31&&currKey<47))
  {
    switch(currKey)
    {
      case 8: keyName = "[退格]"; break;
      case 9: keyName = "[制表]"; break;
      case 13:keyName = "[回车]"; break;
      case 32:keyName = "[空格]"; break;
      case 33:keyName = "[PageUp]"; break;
      case 34:keyName = "[PageDown]"; break;
      case 35:keyName = "[End]"; break;
      case 36:keyName = "[Home]"; break;
      case 37:keyName = "[方向键左]"; break;
      case 38:keyName = "[方向键上]"; break;
      case 39:keyName = "[方向键右]"; break;
      case 40:keyName = "[方向键下]"; break;
      case 46:keyName = "[删除]"; break;
      default:keyName = ""; break;
    }
    keystring += keyName;
  }
  $("content").innerHTML=keystring;
}
function keyup(e)
{
  $("content").innerHTML=keystring;
}
document.onkeypress=keypress;
document.onkeydown =keydown;
document.onkeyup =keyup;

</script>
<input type="text" />
<input type="button" value="清空记录" onclick="$('content').innerHTML = '';keystring = '';"/>
<br/>请按下任意键查看键盘响应键值:<span id="content"></span>

</BODY>
</HTML>
happy664618843 2009-12-31
  • 打赏
  • 举报
回复
将特殊字符替换掉
sunshine_99 2009-12-31
  • 打赏
  • 举报
回复

var content = document.getElementById('mailContent').value;
var str1 = content.replace(/\r\n/g,"</br>");
str1 = content.replace(/ /g," ");
alert(str1);


这么写的话,它只会替换空格,回车不管用


var content = document.getElementById('mailContent').value;
var str1 = content.replace(/\r\n/g,"</br>");
alert(str1);
var str2 = content.replace(/ /g," ");
alert(str2);


分开写的话就没事了,str1替换回车,str2替换空格

可是写一起怎么就只替换空格呢??
sunshine_99 2009-12-31
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 lihui_shine 的回复:]
引用 2 楼 ltnrain 的回复:
不用按一下回车就加换行吧,楼主在最后提交的时候把\r\n替换成 <br/>就可以了。

原来这个意思,LZ想过滤掉回车
JScript codevar str= document.getElementById("mailContent").innerText;
str= str.replace("\r\n","<br/>");
str= str.replace(""," ");
alert(str);
[/Quote]

这样做回车不管用的
sunshine_99 2009-12-31
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 cn00439802 的回复:]
var content = document.getElementById("mailContent").value;
var a = content.replace(/char(10)/,' </br>');

别老以为innerHTML是万能的。

[/Quote]

呵呵,没老以为innerHTML是万能的,value也不行
草根醉秋意 2009-12-31
  • 打赏
  • 举报
回复

<textarea id="content" rows="5" cols="20"></textarea>
<input type="button" value="show" onclick="show()" />
<div id="div1">
</div>

<script type="text/javascript">
function show() {
var content = document.getElementById("content").value.replace(/\r\n/g, "<br/>").replace(/\n/g, "<br/>");
document.getElementById("div1").innerHTML = content;
}
</script>
sunshine_99 2009-12-31
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 lihui_shine 的回复:]
试试用onpropertychange事件看看
[/Quote]

用过,但是输入汉字就不对了
浪尖赏花 2009-12-31
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 ltnrain 的回复:]
不用按一下回车就加换行吧,楼主在最后提交的时候把\r\n替换成 <br/>就可以了。
[/Quote]
原来这个意思,LZ想过滤掉回车

var str = document.getElementById("mailContent").innerText;
str = str.replace("\r\n","<br/>");
str = str.replace(" "," ");
alert(str);
钱不是问题 2009-12-31
  • 打赏
  • 举报
回复
textarea换行是\n 换行符
cn00439802 2009-12-31
  • 打赏
  • 举报
回复

var content = document.getElementById("mailContent").value;
var a = content.replace(/char(10)/,'</br>');

别老以为innerHTML是万能的。
草根醉秋意 2009-12-31
  • 打赏
  • 举报
回复
不用按一下回车就加换行吧,楼主在最后提交的时候把\r\n替换成<br/>就可以了。
浪尖赏花 2009-12-31
  • 打赏
  • 举报
回复
试试用onpropertychange事件看看
发帖
JavaScript

8.7w+

社区成员

Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
帖子事件
创建了帖子
2009-12-31 04:17
社区公告
暂无公告