【问题标题】:Get value of appended textarea获取附加文本区域的值
【发布时间】:2014-12-31 14:35:48
【问题描述】:

我用按钮附加一个文本区域

$(".mydiv").append("<textarea id='myTextarea'></textarea><div class='sendReply btn btn-default'>my button</div>");

之后,我将新文本写入 textarea 并尝试使用此 on click 功能从 textarea 中获取新写入的值;

jQuery(document).on('click','.sendReply', function () {
  var myNewText =  $("#myTextarea").val();
    console.log(myNewText);
  });

但它说这是一个“空字符串”,如果我添加具有 &lt;textarea id="myTextarea"&gt;some text&lt;/textarea&gt; 之类的值的文本区域,我的功能可以工作并给我“一些文本”但是如果我编辑 textarea 并单击 sendReply 按钮(我的点击功能),它仍然给我“一些文字”,它不会改变

追加文本区域后如何获取编辑后的文本区域值?

【问题讨论】:

    标签: javascript jquery


    【解决方案1】:

    在附加 HTML 时,您在 .sendReply 中有一个 .

    您只需从.sendReply 中删除.

    使用

    <div class='sendReply btn btn-default'>my button</div>"
    

    当您使用事件委托时,您的 jQuery 将正常工作。

    当您多次添加具有相同 ID 的 textarea 时?$("#myTextarea").val() 将始终显示 ID 为 myTextarea 的第一个 textarea 的值。可以使用一个通用类,然后使用prev()选择textarea

    查看示例

    $(document).ready(function() {
    
      $(document).on('click', '.sendReply', function() {
        var myNewText = $(this).prev(".myTextarea").val();
        alert(myNewText);
      });
      for (var i = 0; i < 5; i++) {
        $(".mydiv").append("<textarea class='myTextarea'>some text</textarea><div class='sendReply btn btn-default'>my button</div>");
      }
    });
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
    <div class='mydiv'></div>

    【讨论】:

    • 谢谢你,但实际上在我的真实代码中这是真的,我编辑了问题,我很伤心,如果我添加像 这样的值的文本区域我的功能可以正常工作,所以按钮可以正常工作:)
    • @OsmanErdi,代码没有问题,问题一定是其他问题。您是否多次添加具有相同 ID 的 textarea?如果是这种情况,$("#myTextarea").val() 将始终显示 ID 为 myTextarea 的第一个 textarea 的值
    • 好的,但是你应该添加带有附加功能的文本区域,然后你应该尝试获取值
    • @OsmanErdi,运行代码 sn -p 我在示例中添加了 5 个文本区域。
    • 非常感谢我现在可以在项目中修复我的代码,这就是我想做的,谢谢,我认为这对每个人来说都是非常有用的例子
    【解决方案2】:

    应该是

    $(".mydiv").append("<textarea id='myTextarea'></textarea><div class='sendReply btn btn-default'>my button</div>");
    

    然后

    jQuery(document).on('click','.sendReply', function () {
      var myNewText =  $("#myTextarea").val();
        console.log(myNewText);
      });
    

    不要使用点(.)作为类名..

    【讨论】:

    • 错别字在您的班级选择器中缺少.
    • 我改变了它,我仍然无法获得新的编辑值我将添加 jsfiddle,谢谢
    • 是的,请将您的代码放在 JsFiddle 中,这对我们来说很容易
    【解决方案3】:

    而不是使用 div .. 使用一些标准来编码 .. 你可以让它有按钮 .. 这是代码

    <div class="mydiv"></div>
    
    $(".mydiv").append("<textarea id='myTextarea'></textarea><input type='button' class='sendReply btn btn-default' value='my button'></input>");
    jQuery(document).on('click','.sendReply', function () {
      var myNewText =  $("#myTextarea").val();
        console.log(myNewText);
        alert(myNewText);
      });
    

    JSFIDDLE

    【讨论】:

    • 你没有错,但它的编码方式,,
    猜你喜欢
    • 2022-08-23
    • 2011-09-26
    • 2013-02-03
    • 2011-06-19
    • 1970-01-01
    • 2011-12-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多