在文本框的Keypress事件上更新DIV的InnerHTML

时间:2012-06-29 06:54:45

标签: javascript html onkeyup

我想要一个输入框,用户可以在其中添加或更改文本,同时(或在完成后),我想更新div中的文本,使用刚输入的文本

这是我使用的代码

JAVASCRIPT:

<script language="javascript" type="text/javascript"> 
function change(boxid,divtoaffect) { 
content = document.getElementById("" + boxid + "").value; 
document.getElementById(divtoaffect).innerHTML = content; 
} 
</script> 

HTML:

<table border="0" cellpadding="5" cellspacing="0" style="border-bottom:1px solid black; border-right:1px solid black; border-left:1px solid black; border-top:1px solid black" width="50%">
<tr>
    <td >Name:<br/><input type="text" id="text1" onKeyPress="change('text1','output1')"  /></td>
    <td valign="bottom"><div id="output1" style="font-weight:bold;height:20px;"></div></td>
</tr>
<tr>
    <td>Designation:<br/><textarea id="text2" rows="1" onKeyPress="change('text2','output2')"></textarea></td>
    <td valign="bottom"><div  id="output2" style="height:40px;"></div> </td>
</tr>
<tr>
    <td>Address:<br/><textarea id="text3" rows="2" onKeyPress="change('text3','output3')"></textarea></td>
    <td valign="bottom"><div id="output3" style="height:50px;"></div></td>
</tr>
</table>

这里的问题是当我在文本框中键入第二个单词时它会更新DIV,即当我键入单个单词时它不会显示在DIV中,当我输入第二个单词时它会显示第一个单词在DIV。

enter image description here

enter image description here

当我在Textarea字段中按Enter键时,在DIV中它继续在同一行。这是图像 enter image description here

1 个答案:

答案 0 :(得分:6)

使用onKeyPress事件

代替onKeyUp

编辑:扩展问题。

您需要将回车符(+换行符)转换为<br />标记。像下面的东西(在行尾替换)

function change(boxid,divtoaffect) { 
  content = document.getElementById("" + boxid + "").value.replace(/\n/g, '<br>');
  document.getElementById(divtoaffect).innerHTML = content; 
}

请注意,您可能需要替换\r\n(回车+换行)而不是\n(换行)。以下示例

content.replace(/\r\n/g, '<br>'); 
content.replace(/\n/g, '<br>');