0

我有 textarea,在 textarea 中输入的值应该显示在文本框中。这是我使用 textarea 上的“keypress”事件完成的。这工作正常。现在,当我尝试通过单击 div(一些文本内容)来填充 textarea 时,这不起作用。

但在“按键”事件之前,我能够成功填充文本区域。

HTML:

<div id="dvfilltextarea" style="cursor: pointer;">Click here and check</div>
<br/>
<input type="text" name="txtvalue" id="txtDisplayMessage">
<br/>
<textarea id="txtMessage" rows="5" cols="20"></textarea>

JavaScript:

$(document).ready(function () {
$("#txtMessage").bind("keypress", function (e) {
    if (e.which == 13) {
        $("#txtDisplayMessage").val($("#txtMessage").val());
        $("#txtMessage").val("");
    }
});

$("#dvfilltextarea").click(function() {
    $("#txtMessage").html("div clicked");
});});

链接:http: //jsfiddle.net/6VkfD/1/

无法理解这里发生了什么。

谢谢!

4

4 回答 4

1

您需要使用val http://api.jquery.com/val/

$("#dvfilltextarea").click(function() {
    $("#txtMessage").val("div clicked");
});

http://jsfiddle.net/tarabyte/6VkfD/3/

于 2013-11-15T10:09:57.710 回答
1

您需要使用一些文本设置文本区域的值。所以使用.val()来做到这一点。.html()没有设置 textarea 的值。它可以应用于 div、p 等标签而不是输入元素。所以试试这个,

$("#txtMessage").val("div clicked");
于 2013-11-15T10:10:11.720 回答
0

试试这个,它适用于所有事件,经过测试;p

  function update(){
    $("#txtDisplayMessage").val($("#txtMessage").val());
  };
  $('#txtMessage').keydown(function(e) {
    update();
  }).focusout(function(){
    update();
  }).bind('input propertychange', function() {
    update();
  });
于 2013-11-15T10:13:38.523 回答
0

将 html 更改为 val

 $(document).ready(function () {

$("#txtMessage").bind("keypress", function (e) {
    if (e.which == 13) {
        $("#txtDisplayMessage").val($("#txtMessage").val());
        $("#txtMessage").val("");
    }
});

$("#dvfilltextarea").click(function() {
    $("#txtMessage").val("div clicked");
});
});
于 2013-11-15T10:10:30.067 回答