2

我有一个处理输出的文本区域和一个处理用户输入的文本字段。

焦点将完全集中在输入字段上。我无法让用户输入字段在提交表单时添加文本(按下回车键)。只有当有一个按钮并且单击它时它才会起作用。我该如何解决这个问题?

下面是我正在尝试输入键提交的代码。

<html>
<head>
<script type="text/javascript">
  function addtxt(input) {
    var obj=document.getElementById(input)
    var txt=document.createTextNode("blah blah")
    obj.appendChild(txt)
  }
</script>
</head>
<body>
<textarea id="textarea1"></textarea>
<br><input type="text" onSubmit="addtxt('textarea1');">
</body>
</html>
4

4 回答 4

2

这将完成这项工作。此外,您应该处理valuetextarea 的属性,而不是向其附加文本节点:如果用户完全更改了 textarea 的值,之后更改其子节点将无效。如果您希望 textarea 是只读的,请添加一个readonly属性:<textarea id="textarea1" readonly></textarea>

<script type="text/javascript">
    function inputKeyDown(evt, input) {
        if (evt.keyCode == 13) {
            var textarea = document.getElementById("textarea1");
            textarea.value += "\n" + input.value;
            input.value = ""; // I'm guessing you may want this
            return false;
        }
    }
</script>

<input type="text" onkeydown="return inputKeyDown(event, this);">
于 2010-09-09T15:20:48.070 回答
1

尝试使用 keypress 事件,而不是提交。检测何时按下回车键,复制数据,取消事件(防止表单提交)。如果您允许表单提交,它将简单地将现有页面替换为表单发布的结果。

修改您当前的代码:

<html> 
<head> 
<script type="text/javascript"> 
  function addtxt(e,ctl,input) {
    var key;
    if (window.event) {
       key = event.keyCode;
    } else {
       key = e.which;
    }
    if (key == 13) {
       var obj=document.getElementById(input);
       var txt=document.createTextNode("blah blah");
       obj.appendChild(txt);
       ctl.value = '';
       return false;
    }
    return true;
  } 
</script> 
</head> 
<body> 
<textarea id="textarea1"></textarea> 
<br><input type="text" onkeypress="return addtxt(event,this,'textarea1');"> 
</body> 
</html>

请注意,可能有更好的方法来实现您的最终目标,但由于您没有说明那是什么,这确实是我能做的最好的。另外,我肯定会考虑使用 jQuery/Dojo/Prototype 之类的框架,并悄悄地添加处理程序。

于 2010-09-09T15:00:17.903 回答
0

使用表单元素

<form onsubmit="addtxt('textarea1')">
    <textarea id="textarea1"></textarea>
    <br><input type="text" />
</form>
于 2010-09-09T14:58:57.580 回答
0

您可以使用 JQuery

$('textarea#textarea1').keypress(function(e) {
    if (e.keyCode == 13) { // enter
       //do some stuff
    }
});
于 2010-09-09T15:04:01.770 回答