【问题标题】:Updating InnerHTML of a DIV on Keypress event of a textbox在文本框的 Keypress 事件上更新 DIV 的 InnerHTML
【发布时间】:2012-06-29 06:54:45
【问题描述】:

我想要一个输入框,用户可以在其中添加或更改文本,同时(或在他们完成之后),我想用他们刚刚输入的文本更新 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 中。

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

【问题讨论】:

    标签: javascript html onkeyup


    【解决方案1】:

    使用onKeyUp 事件代替onKeyPress

    编辑:扩展问题。

    您需要将回车(+ 换行)转换为&lt;br /&gt; 标记。如下所示(替换在行尾)

    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>');
    

    【讨论】:

    • 非常感谢。这帮助很大。
    • 当我按下 ENTER 时,我可以在下一行输入。但是当我按 ENTER 进入第三行时,它没有输入与之对应的 DIV....我在这里缺少什么...???
    • 我认为您的意思是文本看起来在div 之外。这是因为您将高度设置为 50 像素。如果你把它改成min-height 而不是height,或者添加样式overflow-y:auto; 会更好看
    • 谢谢,我想通了。我保留了overfow:hidden。我把它改成了overfow:visible
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-27
    相关资源
    最近更新 更多