在textarea上“keypress”之后,无法使用onclick事件填充值

时间:2013-11-15 10:06:53

标签: javascript jquery

我有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 个答案:

答案 0 :(得分:1)

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

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

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

答案 1 :(得分:1)

您需要使用一些文本设置文本区域的值。因此,请使用.val()来执行此操作。 .html()未设置textarea的值。它可以应用于div,p等标签而不是输入元素。所以试试这个,

$("#txtMessage").val("div clicked");

答案 2 :(得分: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");
});
});

答案 3 :(得分:0)

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

  function update(){
    $("#txtDisplayMessage").val($("#txtMessage").val());
  };
  $('#txtMessage').keydown(function(e) {
    update();
  }).focusout(function(){
    update();
  }).bind('input propertychange', function() {
    update();
  });